Android網絡變化全局監聽

AndroidNetworkMonitor

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-8HuGi6bF-1582728182498)(https://jitpack.io/v/kongqw/NetworkMonitor.svg)]

Android 全局網絡變化監聽

GitHub的地址

How to

To get a Git project into your build:

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

dependencies {
        implementation 'com.github.kongqw:NetworkMonitor:1.0.1'
}

使用

初始化

Application中初始化

NetworkMonitorManager.getInstance().init(this)

註冊與反註冊

在需要監聽網絡狀態的頁面進行註冊與反註冊

NetworkMonitorManager.getInstance().register(this)
NetworkMonitorManager.getInstance().unregister(this)

監聽網絡狀態變化

@NetworkMonitor
fun onNetWorkStateChange(networkState: NetworkState) {
    when (networkState) {
        NetworkState.NONE -> {
            // TODO 暫無網絡 
        }
        NetworkState.WIFI -> {
            // TODO WIFI網絡 
        }
        NetworkState.CELLULAR -> {
            // TODO 蜂窩網絡 
        }
    }
}

也可以監聽指定網絡狀態,例如

@NetworkMonitor(monitorFilter = [NetworkState.NONE])
fun onNetWorkStateChangeNONE(networkState: NetworkState) {
    // TODO 網絡斷開時回調
}
@NetworkMonitor(monitorFilter = [NetworkState.WIFI])
fun onNetWorkStateChange1(networkState: NetworkState) {
    // TODO WIFI連接上的時候回調
}
@NetworkMonitor(monitorFilter = [NetworkState.WIFI, NetworkState.CELLULAR])
fun onNetWorkStateChange2(networkState: NetworkState) {
    // TODO 連接上WIFI或蜂窩網絡的時候回調
}

判斷當前是否有網絡連接

val hasNetworkCapability: Boolean = NetworkStateUtils.hasNetworkCapability(applicationContext)

獲取當前的網絡狀態

val networkState: NetworkState = NetworkStateUtils.getNetworkState(applicationContext)

混淆

-keepattributes *Annotation*
-keepclassmembers class * {
    @com.kongqw.network.monitor.interfaces.NetworkMonitor <methods>;
}
-keep class com.kongqw.network.monitor.** { *; }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章