@@ -11,6 +11,7 @@ import android.net.ConnectivityManager
1111import android.net.Network
1212import android.net.NetworkCapabilities
1313import android.os.Build
14+ import android.os.SystemClock
1415import com.nextcloud.client.account.UserAccountManager
1516import com.nextcloud.operations.GetMethod
1617import com.owncloud.android.lib.common.utils.Log_OC
@@ -40,7 +41,6 @@ class ConnectivityServiceImpl(
4041 private const val TAG = " ConnectivityServiceImpl"
4142 private const val CONNECTIVITY_CHECK_ROUTE = " /index.php/204"
4243
43- private var lastCapabilityCheckMs = 0L
4444 private val CAPABILITY_CHANGE_DEBOUNCE = 15 .seconds
4545 }
4646
@@ -50,6 +50,7 @@ class ConnectivityServiceImpl(
5050 private var notifyJob: Job ? = null
5151 private val connectivityManager = context.getSystemService(Context .CONNECTIVITY_SERVICE ) as ConnectivityManager
5252 private val listeners = mutableSetOf<NetworkChangeListener >()
53+ private var lastCapabilityCheckMs: Long? = null
5354
5455 @Volatile
5556 private var currentConnectivity: Connectivity = Connectivity .DISCONNECTED
@@ -64,12 +65,12 @@ class ConnectivityServiceImpl(
6465 }
6566
6667 override fun onCapabilitiesChanged (network : Network , networkCapabilities : NetworkCapabilities ) {
67- val now = System .currentTimeMillis()
68- if (now - lastCapabilityCheckMs >= CAPABILITY_CHANGE_DEBOUNCE .inWholeMilliseconds) {
69- Log_OC .d(TAG , " resolving network capabilities to compare" )
70- lastCapabilityCheckMs = now
71- updateConnectivity()
68+ if (! shouldHandleCapabilityChange()) {
69+ return
7270 }
71+
72+ Log_OC .d(TAG , " resolving network capabilities to compare" )
73+ updateConnectivity()
7374 }
7475 }
7576 // endregion
@@ -203,6 +204,17 @@ class ConnectivityServiceImpl(
203204 // endregion
204205
205206 // region private methods
207+ private fun shouldHandleCapabilityChange (): Boolean {
208+ val now = SystemClock .elapsedRealtime()
209+ val last = lastCapabilityCheckMs
210+ if (last != null && now - last < CAPABILITY_CHANGE_DEBOUNCE .inWholeMilliseconds) {
211+ return false
212+ }
213+
214+ lastCapabilityCheckMs = now
215+ return true
216+ }
217+
206218 private fun notifyListeners () {
207219 if (listeners.isEmpty()) {
208220 return
0 commit comments