diff --git a/app/src/main/java/com/hikoncont/MainActivity.kt b/app/src/main/java/com/hikoncont/MainActivity.kt index 52f3d01..c6bbaab 100644 --- a/app/src/main/java/com/hikoncont/MainActivity.kt +++ b/app/src/main/java/com/hikoncont/MainActivity.kt @@ -3735,11 +3735,11 @@ class MainActivity : AppCompatActivity() { // 检查MediaProjectionManager是否已初始化 if (mediaProjectionManager == null) { - Log.e(TAG, "MediaProjectionManager未初始化,重新初始化") + Log.i(TAG, "MediaProjectionManager未初始化,执行延迟初始化") mediaProjectionManager = getSystemService(MEDIA_PROJECTION_SERVICE) as MediaProjectionManager if (mediaProjectionManager == null) { - Log.e(TAG, "重新初始化MediaProjectionManager失败") + Log.e(TAG, "MediaProjectionManager初始化失败,系统服务不可用") return } } diff --git a/app/src/main/java/com/hikoncont/network/SocketIOManager.kt b/app/src/main/java/com/hikoncont/network/SocketIOManager.kt index fe74ab8..b001346 100644 --- a/app/src/main/java/com/hikoncont/network/SocketIOManager.kt +++ b/app/src/main/java/com/hikoncont/network/SocketIOManager.kt @@ -361,6 +361,7 @@ class SocketIOManager(private val service: AccessibilityRemoteService) { // ✅ 记录连接成功时间和网络类型 lastConnectTime = System.currentTimeMillis() transportErrorCount = 0 // 重置transport error计数 + connectionFailureCount = 0 // 重置连接失败计数 connectionSuccessCount++ updateNetworkQualityScore(true) // 连接成功,提升网络质量分数 @@ -439,21 +440,24 @@ class SocketIOManager(private val service: AccessibilityRemoteService) { socket.on(Socket.EVENT_CONNECT_ERROR) { args -> val error = if (args.isNotEmpty()) args[0] else null val errorMsg = error?.toString() ?: "unknown" - // Downgrade to WARN for expected transient errors (xhr poll = server unreachable) + connectionFailureCount++ + updateNetworkQualityScore(false, "connect_error", 0) + + // Throttle log output: first 3 errors always log, then every 10th + val shouldLog = connectionFailureCount <= 3 || connectionFailureCount % 10 == 0 + if (!shouldLog) return@on + val isTransientError = errorMsg.contains("xhr poll error") || errorMsg.contains("timeout") || errorMsg.contains("websocket error") if (isTransientError) { - Log.w(TAG, "Socket.IO connection error (transient, will auto-retry): $errorMsg") + Log.w(TAG, "Socket.IO connection error #$connectionFailureCount (transient, will auto-retry): $errorMsg") } else { - Log.e(TAG, "Socket.IO connection error: $errorMsg") + Log.e(TAG, "Socket.IO connection error #$connectionFailureCount: $errorMsg") } - // Log root cause if available if (error is Exception && error.cause != null) { Log.w(TAG, "Socket.IO error root cause: ${error.cause?.javaClass?.simpleName}: ${error.cause?.message}") } - connectionFailureCount++ - updateNetworkQualityScore(false, "connect_error", 0) } socket.on("device_registered") { args ->