Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31424f8ff6 |
@@ -13,8 +13,8 @@ android {
|
|||||||
applicationId = "com.tsmobile.app"
|
applicationId = "com.tsmobile.app"
|
||||||
minSdk = 26
|
minSdk = 26
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 6
|
versionCode = 7
|
||||||
versionName = "1.0.6"
|
versionName = "1.0.7"
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ class NetworkMonitor(context: Context) {
|
|||||||
private val _isAvailable = MutableStateFlow(true) // 乐观假设:初始时网络可用
|
private val _isAvailable = MutableStateFlow(true) // 乐观假设:初始时网络可用
|
||||||
val isAvailable: StateFlow<Boolean> = _isAvailable.asStateFlow()
|
val isAvailable: StateFlow<Boolean> = _isAvailable.asStateFlow()
|
||||||
|
|
||||||
/** 网络变化计数器:任何网络回调触发时自增(用于检测 isAvailable 不变但底层网络已切换的场景) */
|
/** 网络切换计数器:仅在 onLost / onAvailable 时自增(onCapabilitiesChanged 太频繁,不计数) */
|
||||||
private val _networkChangeCount = MutableStateFlow(0L)
|
private val _networkChangeCount = MutableStateFlow(0L)
|
||||||
val networkChangeCount: StateFlow<Long> = _networkChangeCount.asStateFlow()
|
val networkChangeCount: StateFlow<Long> = _networkChangeCount.asStateFlow()
|
||||||
|
|
||||||
@@ -76,19 +76,14 @@ class NetworkMonitor(context: Context) {
|
|||||||
val hasInternet = capabilities.hasCapability(
|
val hasInternet = capabilities.hasCapability(
|
||||||
NetworkCapabilities.NET_CAPABILITY_INTERNET
|
NetworkCapabilities.NET_CAPABILITY_INTERNET
|
||||||
)
|
)
|
||||||
val wasAvailable = _isAvailable.value
|
// 不修改 _isAvailable —— onCapabilitiesChanged 在移动网络下太频繁
|
||||||
_isAvailable.value = hasInternet
|
// (LTE↔5G 切换等),修改会导致 isAvailable collector 误触发重连。
|
||||||
|
// 仅记录时间戳供 consumeNetworkLossDisconnect 在 Go idle timeout 兜底时判断。
|
||||||
if (!hasInternet && wasAvailable) {
|
if (!hasInternet) {
|
||||||
// 网络能力降级(例如切换中暂时无 Internet)
|
|
||||||
Log.d(TAG, "Network capabilities degraded: hasInternet=false")
|
Log.d(TAG, "Network capabilities degraded: hasInternet=false")
|
||||||
lastLossTimestamp = System.currentTimeMillis()
|
lastLossTimestamp = System.currentTimeMillis()
|
||||||
pendingDisconnectFromLoss = true
|
pendingDisconnectFromLoss = true
|
||||||
}
|
}
|
||||||
if (hasInternet && !wasAvailable) {
|
|
||||||
Log.d(TAG, "Network capabilities restored: hasInternet=true")
|
|
||||||
}
|
|
||||||
_networkChangeCount.value += 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user