返回

AndroidNetworkWatcher:使网络监听业务代码更简单

Android


在Android开发中,经常会遇到需要监听网络变化的场景,比如:

  • 需要根据网络状态决定是否播放视频
  • 在访问网络时进行断网提示
  • 上传文件的时候需要检测网络状态来判断是否断网了

以前我们都是通过广播监听的方式来实现网络状态的监听,但广播监听的方式比较繁琐,需要手动注册和注销广播,而且还需要在广播接收器中进行网络状态的判断,比较麻烦。

AndroidNetworkWatcher是一个库,可以简化网络监听业务代码,它将网络变化监听广播进行了封装,同时定义运行时注解,在网络变化时调用业务层代码,通知网络变化。

特性

  • 无需注册和注销广播,只需在类上添加一个注解即可
  • 提供运行时注解,在网络变化时自动调用业务层代码
  • 提供丰富的回调方法,可以根据需要进行网络状态的判断
  • 提供详细的文档和示例代码,方便开发者使用

使用方法

1. 添加依赖

在项目的build.gradle文件中添加如下依赖:

dependencies {
    implementation 'com.github.razerdp:AndroidNetworkWatcher:1.0.6'
}

2. 添加注解

在需要监听网络变化的类上添加@NetworkWatcher注解,该注解有两个参数:

  • value:网络变化的类型,可以是ConnectivityManager.TYPE_WIFIConnectivityManager.TYPE_MOBILEConnectivityManager.TYPE_ETHERNET
  • callback:网络变化时的回调方法,该方法必须带有void返回值和一个Network参数
@NetworkWatcher(value = ConnectivityManager.TYPE_WIFI, callback = "onWifiNetworkChanged")
public class MainActivity extends AppCompatActivity {
    public void onWifiNetworkChanged(Network network) {
        // 在这里处理Wi-Fi网络变化的逻辑
    }
}

3. 在清单文件中注册广播接收器

在清单文件中注册AndroidNetworkWatcher的广播接收器:

<receiver android:name="com.github.razerdp.androidnetworkwatcher.NetworkBroadcastReceiver">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver>

回调方法

AndroidNetworkWatcher提供了丰富的回调方法,可以根据需要进行网络状态的判断。

回调方法 说明
onAvailable 网络可用时调用
onUnavailable 网络不可用时调用
onConnected 连接到网络时调用
onDisconnected 断开网络连接时调用
onWifiConnected 连接到Wi-Fi网络时调用
onWifiDisconnected 断开Wi-Fi网络连接时调用
onMobileConnected 连接到移动网络时调用
onMobileDisconnected 断开移动网络连接时调用
onEthernetConnected 连接到以太网时调用
onEthernetDisconnected 断开以太网连接时调用

示例

@NetworkWatcher(value = ConnectivityManager.TYPE_WIFI, callback = "onWifiNetworkChanged")
public class MainActivity extends AppCompatActivity {
    public void onWifiNetworkChanged(Network network) {
        if (network.isConnected()) {
            // Wi-Fi已连接
        } else {
            // Wi-Fi已断开
        }
    }

    @NetworkWatcher(value = ConnectivityManager.TYPE_MOBILE, callback = "onMobileNetworkChanged")
    public void onMobileNetworkChanged(Network network) {
        if (network.isConnected()) {
            // 移动网络已连接
        } else {
            // 移动网络已断开
        }
    }

    @NetworkWatcher(value = ConnectivityManager.TYPE_ETHERNET, callback = "onEthernetNetworkChanged")
    public void onEthernetNetworkChanged(Network network) {
        if (network.isConnected()) {
            // 以太网已连接
        } else {
            // 以太网已断开
        }
    }
}

文档和示例代码

AndroidNetworkWatcher的详细文档和示例代码可以在这里找到:AndroidNetworkWatcher

结语

AndroidNetworkWatcher是一个非常方便的库,可以简化网络监听业务代码,使开发者能够专注于业务逻辑的开发。