Przeglądaj źródła

web服务监测网络变化,及时更新IP

kunfei 4 lat temu
rodzic
commit
fe65f68b4d

+ 22 - 9
app/src/main/java/io/legado/app/receiver/NetworkChangedListener.kt

@@ -23,15 +23,22 @@ class NetworkChangedListener(private val context: Context) {
         return@lazy null
         return@lazy null
     }
     }
 
 
-    fun register() {
+    private val networkCallback: ConnectivityManager.NetworkCallback? by lazy {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            connectivityManager.registerDefaultNetworkCallback(
-                object : ConnectivityManager.NetworkCallback() {
-                    override fun onAvailable(network: Network) {
-                        onNetworkChanged?.invoke()
-                    }
+            return@lazy object : ConnectivityManager.NetworkCallback() {
+                override fun onAvailable(network: Network) {
+                    onNetworkChanged?.invoke()
                 }
                 }
-            )
+            }
+        }
+        return@lazy null
+    }
+
+    fun register() {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            networkCallback?.let {
+                connectivityManager.registerDefaultNetworkCallback(it)
+            }
         } else {
         } else {
             receiver?.let {
             receiver?.let {
                 context.registerReceiver(it, it.filter)
                 context.registerReceiver(it, it.filter)
@@ -40,8 +47,14 @@ class NetworkChangedListener(private val context: Context) {
     }
     }
 
 
     fun unRegister() {
     fun unRegister() {
-        receiver?.let {
-            context.unregisterReceiver(it)
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            networkCallback?.let {
+                connectivityManager.unregisterNetworkCallback(it)
+            }
+        } else {
+            receiver?.let {
+                context.unregisterReceiver(it)
+            }
         }
         }
     }
     }