From 150106728764f32d23eb387db6d7742191b03666 Mon Sep 17 00:00:00 2001 From: wdvipa Date: Sun, 15 Feb 2026 15:42:08 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=8A=A5=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SocketIOManager: 连接错误日志添加降频机制(前3次每次打印,之后每10次打印一次),避免服务器不可达时日志刷屏 - SocketIOManager: 连接成功时重置connectionFailureCount计数器,确保降频逻辑正确 - MainActivity: MediaProjectionManager延迟初始化日志从ERROR降级为INFO,这是正常行为不应报错 --- app/src/main/java/com/hikoncont/MainActivity.kt | 4 ++-- .../com/hikoncont/network/SocketIOManager.kt | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) 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 ->