🐛 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
@@ -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