🐛 Fix source switching crash & enhance stability (v3.0.4)

### 🐛 Bug Fixes
- Fix random crashes when switching video sources in settings management
- Enhanced VodConfig.setHome() null pointer exception handling
- Improved Fragment lifecycle checks to prevent crashes
- Optimized HistoryDialog source switching safety
- Enhanced thread safety for concurrent loading

###  Performance Improvements
- Added automatic cache cleaning functionality
- Improved memory usage optimization
- Enhanced network request stability

### 🆕 New Features
- Added comprehensive error handling mechanisms
- Enhanced crash protection functionality
- Improved Fragment state validation

### 📱 Build Improvements
- Updated README with professional documentation
- Enhanced build configuration for ARM64-V8A and ARM V7A
- Improved APK packaging and signing process
This commit is contained in:
您的名字
2025-07-30 21:25:10 +08:00
parent 0d7b25710c
commit dab1425dea
345 changed files with 40300 additions and 754 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,4 @@
text/html = ISO-8859-1
text/plain = ISO-8859-1
text/xml = UTF-8
text/json = UTF-8
@@ -0,0 +1,181 @@
ai = application/postscript
aif = audio/x-aiff
aifc = audio/x-aiff
aiff = audio/x-aiff
apk = application/vnd.android.package-archive
asc = text/plain
asf = video/x.ms.asf
asx = video/x.ms.asx
au = audio/basic
avi = video/x-msvideo
bcpio = application/x-bcpio
bin = application/octet-stream
cab = application/x-cabinet
cdf = application/x-netcdf
class = application/java-vm
cpio = application/x-cpio
cpt = application/mac-compactpro
crt = application/x-x509-ca-cert
csh = application/x-csh
css = text/css
csv = text/comma-separated-values
dcr = application/x-director
dir = application/x-director
dll = application/x-msdownload
dms = application/octet-stream
doc = application/msword
dtd = application/xml-dtd
dvi = application/x-dvi
dxr = application/x-director
eps = application/postscript
etx = text/x-setext
exe = application/octet-stream
ez = application/andrew-inset
gif = image/gif
gtar = application/x-gtar
gz = application/gzip
gzip = application/gzip
hdf = application/x-hdf
hqx = application/mac-binhex40
htc = text/x-component
htm = text/html
html = text/html
ice = x-conference/x-cooltalk
ico = image/x-icon
ief = image/ief
iges = model/iges
igs = model/iges
jad = text/vnd.sun.j2me.app-descriptor
jar = application/java-archive
java = text/plain
jnlp = application/x-java-jnlp-file
jpe = image/jpeg
jpeg = image/jpeg
jpg = image/jpeg
js = application/x-javascript
jsp = text/html
kar = audio/midi
latex = application/x-latex
lha = application/octet-stream
lzh = application/octet-stream
man = application/x-troff-man
mathml = application/mathml+xml
me = application/x-troff-me
mesh = model/mesh
mid = audio/midi
midi = audio/midi
mif = application/vnd.mif
mol = chemical/x-mdl-molfile
mov = video/quicktime
movie = video/x-sgi-movie
mp2 = audio/mpeg
mp3 = audio/mpeg
mpe = video/mpeg
mpeg = video/mpeg
mpg = video/mpeg
mpga = audio/mpeg
ms = application/x-troff-ms
msh = model/mesh
msi = application/octet-stream
nc = application/x-netcdf
oda = application/oda
odb = application/vnd.oasis.opendocument.database
odc = application/vnd.oasis.opendocument.chart
odf = application/vnd.oasis.opendocument.formula
odg = application/vnd.oasis.opendocument.graphics
odi = application/vnd.oasis.opendocument.image
odm = application/vnd.oasis.opendocument.text-master
odp = application/vnd.oasis.opendocument.presentation
ods = application/vnd.oasis.opendocument.spreadsheet
odt = application/vnd.oasis.opendocument.text
ogg = application/ogg
otc = application/vnd.oasis.opendocument.chart-template
otf = application/vnd.oasis.opendocument.formula-template
otg = application/vnd.oasis.opendocument.graphics-template
oth = application/vnd.oasis.opendocument.text-web
oti = application/vnd.oasis.opendocument.image-template
otp = application/vnd.oasis.opendocument.presentation-template
ots = application/vnd.oasis.opendocument.spreadsheet-template
ott = application/vnd.oasis.opendocument.text-template
pbm = image/x-portable-bitmap
pdb = chemical/x-pdb
pdf = application/pdf
pgm = image/x-portable-graymap
pgn = application/x-chess-pgn
png = image/png
pnm = image/x-portable-anymap
ppm = image/x-portable-pixmap
pps = application/vnd.ms-powerpoint
ppt = application/vnd.ms-powerpoint
ps = application/postscript
qt = video/quicktime
ra = audio/x-pn-realaudio
ram = audio/x-pn-realaudio
ras = image/x-cmu-raster
rdf = application/rdf+xml
rgb = image/x-rgb
rm = audio/x-pn-realaudio
roff = application/x-troff
rpm = application/x-rpm
rtf = application/rtf
rtx = text/richtext
rv = video/vnd.rn-realvideo
ser = application/java-serialized-object
sgm = text/sgml
sgml = text/sgml
sh = application/x-sh
shar = application/x-shar
silo = model/mesh
sit = application/x-stuffit
skd = application/x-koan
skm = application/x-koan
skp = application/x-koan
skt = application/x-koan
smi = application/smil
smil = application/smil
snd = audio/basic
spl = application/x-futuresplash
src = application/x-wais-source
sv4cpio = application/x-sv4cpio
sv4crc = application/x-sv4crc
svg = image/svg+xml
swf = application/x-shockwave-flash
t = application/x-troff
tar = application/x-tar
tar.gz = application/x-gtar
tcl = application/x-tcl
tex = application/x-tex
texi = application/x-texinfo
texinfo = application/x-texinfo
tgz = application/x-gtar
tif = image/tiff
tiff = image/tiff
tr = application/x-troff
tsv = text/tab-separated-values
txt = text/plain
ustar = application/x-ustar
vcd = application/x-cdlink
vrml = model/vrml
vxml = application/voicexml+xml
wav = audio/x-wav
wbmp = image/vnd.wap.wbmp
wml = text/vnd.wap.wml
wmlc = application/vnd.wap.wmlc
wmls = text/vnd.wap.wmlscript
wmlsc = application/vnd.wap.wmlscriptc
wrl = model/vrml
wtls-ca-certificate = application/vnd.wap.wtls-ca-certificate
xbm = image/x-xbitmap
xht = application/xhtml+xml
xhtml = application/xhtml+xml
xls = application/vnd.ms-excel
xml = application/xml
xpm = image/x-xpixmap
xsd = application/xml
xsl = application/xml
xslt = application/xslt+xml
xul = application/vnd.mozilla.xul+xml
xwd = image/x-xwindowdump
xyz = chemical/x-xyz
z = application/compress
zip = application/zip
@@ -0,0 +1 @@
AbstractHandler: Jetty Handler.
@@ -0,0 +1,24 @@
ContextHandler: URI Context
aliases: True if alias checking is performed on resource
allowNullPathInfo: Checks if the /context is not redirected to /context/
classPath: RO: The file classpath
compactPath: True if URLs are compacted to replace the multiple '/'s with a single '/'
connectorNames: Names and ports of accepted connectors
contextAttributes: RO:MBean: Map of context attributes
contextPath: URI prefix of context
displayName: RO: Display name of the Context
errorHandler: MObject: The error handler to use for the context
initParams: Initial Parameter map for the context
maxFormContentSize: The maximum content size
removeContextAttribute(java.lang.String): MBean:ACTION: remove context attribute
removeContextAttribute(java.lang.String)[0]: name: The attribute name
resourceBase: Document root for the context
setContextAttribute(java.lang.String,java.lang.Object): MBean:ACTION: Set context attribute
setContextAttribute(java.lang.String,java.lang.Object)[0]: name: The attribute name
setContextAttribute(java.lang.String,java.lang.Object)[1]: value: The attribute value
setContextAttribute(java.lang.String,java.lang.String): MBean:ACTION: Set context attribute
setContextAttribute(java.lang.String,java.lang.String)[0]: name: The attribute name
setContextAttribute(java.lang.String,java.lang.String)[1]: value: The attribute value
shutdown: False if this context is accepting new requests. True for graceful shutdown, which allows existing requests to complete
virtualHosts: Virtual hosts accepted by the context
welcomeFiles: Partial URIs of directory welcome files
@@ -0,0 +1,2 @@
ContextHandlerCollection: Context Handler Collection
mapContexts(): Update the mapping of context path to context
@@ -0,0 +1,2 @@
HandlerCollection: Handler of multiple Handlers
handlers: MObject:Wrapped handlers
@@ -0,0 +1,2 @@
HandlerWrapper: Handler wrapping another Handler
handler: MObject:Wrapped handler
@@ -0,0 +1,28 @@
StatisticsHandler: Request Statistics gathering
statsOnMs: Time in milliseconds stats have been collected for.
statsReset(): Resets statistics.
requests: Number of requests since statsReset() called.
requestsActive: Number of requests currently active since statsReset() called.
requestsActiveMax: Maximum number of active requests since statsReset() called.
requestTimeMax: Maximum time in milliseconds of request handling since statsReset() called.
requestTimeTotal: Total time in milliseconds of all request handling since statsReset() called.
requestTimeMean: Mean of time in milliseconds of request handling since statsReset() called.
requestTimeStdDev: Standard deviation of time in milliseconds of request handling since statsReset() called.
dispatched: Number of dispatches since statsReset() called.
dispatchedActive: Number of dispatches currently active since statsReset() called.
dispatchedActiveMax: Maximum number of active dispatches since statsReset() called.
dispatchedTimeMax: Maximum time in milliseconds of dispatched handling since statsReset() called.
dispatchedTimeTotal: Total time in milliseconds of all dispatched handling since statsReset() called.
dispatchedTimeMean: Mean of time in milliseconds of dispatch handling since statsReset() called.
dispatchedTimeStdDev: Standard deviation of time in milliseconds of dispatch handling since statsReset() called.
suspends: Number of requests suspended since statsReset() called.
suspendsActive: Number of dispatches currently active since statsReset() called.
suspendsActiveMax: Maximum number of active dispatches since statsReset() called.
resumes: Number of requests resumed since statsReset() called.
expires: Number of requests expired since statsReset() called.
responses1xx: Number of responses with a 1xx status since statsReset() called.
responses2xx: Number of responses with a 2xx status since statsReset() called.
responses3xx: Number of responses with a 3xx status since statsReset() called.
responses4xx: Number of responses with a 4xx status since statsReset() called.
responses5xx: Number of responses with a 5xx status since statsReset() called.
responsesBytesTotal: Total number of bytes of all responses since statsReset() called.
@@ -0,0 +1,19 @@
AbstractConnector: Abstract implementation of the Connector interface.
acceptors: The number of acceptor threads.
acceptQueueSize: The size of the accept queue.
acceptorPriorityOffset: Priority offset of the acceptor threads. The priority is adjusted by this amount to either favor the acceptance of new threads and newly active connections or to favor the handling of already dispatched connections.
forwardedForHeader: The header name for forwarded for (default x-forwarded-for).
forwardedHostHeader: The header name for forwarded hosts (default x-forwarded-host)
forwardedServerHeader: The header name for forwarded server (default x-forwarded-server)
forwarded: Whether reverse proxy handling is on. True if this connector is checking the forwarded for/host/server headers.
host: Host name of the server.
hostHeader: Forced value for the host header. Only used if forwarded is true.
soLingerTime: Enable or disable SO_LINGER with the specified linger time in seconds.
reuseAddress: Whether the server socket will be opened in SO_REUSEADDR mode.
name: Name of the connector.
resolveNames: Whether or not to use DNS when handling forwards.
confidentialPort: Port to use for confidential redirections.
confidentialScheme: Scheme to use for confidential redirections.
integralPort: Port to use for integral redirections.
integralScheme: Scheme to use for integral redirections.
lowResourcesMaxIdleTime: The period in ms that a connection may be idle when the connector has low resources, before it is closed.
@@ -0,0 +1,29 @@
Connector: HTTP Connector.
server: MObject:RO:The server for this connector
requestHeaderSize: The size of a request header buffer
requestBufferSize: The size of a request content buffer
responseHeaderSize: The size of a response header buffer
responseBufferSize: The size of a response content buffer
integralPort: Port to use for integral redirections
integralScheme: Scheme to use for integral redirections
confidentialPort: Port to use for confidential redirections
confidentialScheme: Scheme to use for confidential redirections
host: Host name to accept connections on
port: TCP/IP port to accept connections on
maxIdleTime: Maximum time in ms that a connection can be idle before being closed
statsOn: True if statistics collection is turned on.
statsOnMs: Time in milliseconds stats have been collected for.
statsReset(): Reset statistics.
connections: Number of connections accepted by the server since statsReset() called. Undefined if setStatsOn(false).
connectionsOpen: Number of connections currently open that were opened since statsReset() called. Undefined if setStatsOn(false).
connectionsOpenMax: Maximum number of connections opened simultaneously since statsReset() called. Undefined if setStatsOn(false).
connectionsDurationMean: Mean duration in milliseconds of open connections since statsReset() called. Undefined if setStatsOn(false).
connectionsDurationStdDev: Standard deviation of duration in milliseconds of an open connection since statsReset() called. Undefined if setStatsOn(false).
connectionsDurationMax: Maximum duration in milliseconds of an open connection since statsReset() called. Undefined if setStatsOn(false).
connectionsDurationTotal: Total duration in milliseconds of all open connection since statsReset() called. Undefined if setStatsOn(false).
connectionsRequestsMean: Mean number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
connectionsRequestsStdDev: Standard deviation of number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
connectionsRequestsMax: Maximum number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
requests: Number of requests since statsReset() called. Undefined if setStatsOn(false).
open(): Open the listening port
close(): Close the listening port (but allow existing connections to continue for graceful shutdown)
@@ -0,0 +1,3 @@
Handler: Jetty Handler.
server: MObject:RO:The Jetty server for this handler
destroy(): destroy associated resources (eg MBean)
@@ -0,0 +1,3 @@
HandlerContainer: Handler of multiple Handlers
handlers: MObject:RO:Handlers in this container
childHandlers: MObject:RO:All contained handlers
@@ -0,0 +1,6 @@
NCSARequestLog : NCSA standard format request log
filename : Filename of log
retainDays : Number of days that the log files are kept
append : Existing log files are appended to the new one
extended : Use the extended NCSA format
LogTimeZone : The timezone
@@ -0,0 +1,9 @@
Server: Jetty HTTP Servlet server
connectors: MObject:HTTP Connectors for this server
version: RO: The version of this server
sendServerVersion: If true include the server version in HTTP headers
threadPool: MObject:The server Thread Pool
contexts: MMBean:RO:The contexts of this server
startupTime: MBean:RO:The startup time, in milliseconds, since January 1st 1970
dumpAfterStart: RW:Dump state to stderr after start
dumpBeforeStop: RW:Dump state to stderr before stop
@@ -0,0 +1,2 @@
SelectChannelConnector: HTTP connector using NIO ByteChannels and Selectors
lowResourcesConnections: The number of connections, which if exceeded represents low resources
@@ -0,0 +1,19 @@
AbstractSessionManager: Abstract Session Manager
httpOnly: True if cookies use the http only flag
idManager: MObject:RO:The ID Manager instance
maxCookieAge: if greater than zero, the time in seconds a session cookie will last for
maxInactiveInterval: default maximum time in seconds a session may be idle
refreshCookieAge: The time in seconds after which a session cookie is re-set
secureCookies: If true, the secure cookie flag is set on session cookies
sessionCookie: The set session cookie
sessionDomain: The domain of the session cookie or null for the default
sessionPath: The path of the session cookie or null for the default
sessionsTotal: The total number of sessions
sessionIdPathParameterName: The name to use for URL session tracking
statsReset(): Reset statistics
sessions: Current instantaneous number of sessions
sessionsMax: Maximum number of simultaneous sessions since statsReset() was called
sessionTimeMax: Maximum amount of time in seconds session remained valid since statsReset() was called
sessionTimeTotal: Total amount of time in seconds sessions remained valid since statsReset() was called
sessionTimeMean: Mean amount of time in seconds a session remained valid since statsReset() was called
sessionTimeStdDev: Standard deviation of amount of time in seconds a session remained valid since statsReset() was called
@@ -0,0 +1,4 @@
FilterMapping: Filter Mapping
filterName: RO:Filter Name
pathSpecs: RO:URL patterns
servletNames: RO:Servlet Names
@@ -0,0 +1,5 @@
Holder: Holder
name: RO:Name
displayName: RO:Display Name
className: RO:Class Name
initParameters: RO:Initial parameters
@@ -0,0 +1,4 @@
ServletContextHandler: Servlet Context Handler
securityHandler: MObject: The context's security handler
servletHandler: MObject: The context's servlet handler
sessionHandler: MObject: The context's session handler
@@ -0,0 +1,5 @@
ServletHandler: Servlet Handler
servlets: MObject:RO:Servlets
servletMappings: MObject:RO:Mappings of servlets
filters: MObject:RO:Filters
filterMappings: MObject:RO:Mappings of filters
@@ -0,0 +1,4 @@
ServletHolder: Servlet Holder
initOrder: Initialization order
runAsRole: Role to run servlet as
forcedPath: Forced servlet path
@@ -0,0 +1,3 @@
ServletMapping: Servlet Mapping
servletName: RO:Servlet Name
pathSpecs: RO:URL patterns