From 31424f8ff68ce9b4556d1d6f0f45adcb51e58134 Mon Sep 17 00:00:00 2001 From: sansen Date: Fri, 24 Jul 2026 10:41:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A7=BB=E5=8A=A8=E7=BD=91?= =?UTF-8?q?=E7=BB=9C=E4=B8=8B=E9=A2=91=E7=B9=81=E8=A7=A6=E5=8F=91=E9=87=8D?= =?UTF-8?q?=E8=BF=9E=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle.kts | 4 ++-- .../main/java/com/tsmobile/app/NetworkMonitor.kt | 15 +++++---------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 0fce9ef..4446ed1 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -13,8 +13,8 @@ android { applicationId = "com.tsmobile.app" minSdk = 26 targetSdk = 35 - versionCode = 6 - versionName = "1.0.6" + versionCode = 7 + versionName = "1.0.7" } signingConfigs { diff --git a/android/app/src/main/java/com/tsmobile/app/NetworkMonitor.kt b/android/app/src/main/java/com/tsmobile/app/NetworkMonitor.kt index b3b4f75..1f8cd90 100644 --- a/android/app/src/main/java/com/tsmobile/app/NetworkMonitor.kt +++ b/android/app/src/main/java/com/tsmobile/app/NetworkMonitor.kt @@ -37,7 +37,7 @@ class NetworkMonitor(context: Context) { private val _isAvailable = MutableStateFlow(true) // 乐观假设:初始时网络可用 val isAvailable: StateFlow = _isAvailable.asStateFlow() - /** 网络变化计数器:任何网络回调触发时自增(用于检测 isAvailable 不变但底层网络已切换的场景) */ + /** 网络切换计数器:仅在 onLost / onAvailable 时自增(onCapabilitiesChanged 太频繁,不计数) */ private val _networkChangeCount = MutableStateFlow(0L) val networkChangeCount: StateFlow = _networkChangeCount.asStateFlow() @@ -76,19 +76,14 @@ class NetworkMonitor(context: Context) { val hasInternet = capabilities.hasCapability( NetworkCapabilities.NET_CAPABILITY_INTERNET ) - val wasAvailable = _isAvailable.value - _isAvailable.value = hasInternet - - if (!hasInternet && wasAvailable) { - // 网络能力降级(例如切换中暂时无 Internet) + // 不修改 _isAvailable —— onCapabilitiesChanged 在移动网络下太频繁 + // (LTE↔5G 切换等),修改会导致 isAvailable collector 误触发重连。 + // 仅记录时间戳供 consumeNetworkLossDisconnect 在 Go idle timeout 兜底时判断。 + if (!hasInternet) { Log.d(TAG, "Network capabilities degraded: hasInternet=false") lastLossTimestamp = System.currentTimeMillis() pendingDisconnectFromLoss = true } - if (hasInternet && !wasAvailable) { - Log.d(TAG, "Network capabilities restored: hasInternet=true") - } - _networkChangeCount.value += 1 } }