Android开发中常常遇到须要监听网络变化的场景,好比播放,好比访问网络时进行断网提示,因而有了今天的AndroidNetworkWatcher。git
AndroidNetworkWatcher:github.com/xiong-it/An…github
主要是将网络变化监听广播进行了封装,同时定义运行时注解,在网络变化时调用业务层代码,通知网络变化。bash
因为还没上传到jcenter,没法经过gradle远程依赖,读者能够自行下载源码本地依赖,或者参考源码本身封装。网络
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
NetworkStateWatcher.getDefault().init(this);
}
}
复制代码
@Override
protected void onStart() {
super.onStart();
// 注册网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().registerObserver(this);
}
复制代码
@Override
protected void onStop() {
super.onStop();
// 注销网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().unRegisterObserver(this);
}
复制代码
定义接收网络变化的函数(2种方法)app
4.1 第一种:监听全部网络变化ide
/**
* 网络发生变化
*
* @param type 网络类型
*/
@NetworkStateChanged(notifyOnAppStart = false)
void onNetworkStateChanged(int type) {
switch (type) {
case NetworkTypeEnum.NETWORK_2G:
case NetworkTypeEnum.NETWORK_3G:
case NetworkTypeEnum.NETWORK_4G:
// 切换到移动网络
break;
case NetworkTypeEnum.NETWORK_WIFI:
// 切换到wifi
break;
case NetworkTypeEnum.NETWORK_NO:
// 断网
break;
}
}
复制代码
4.2 第二种:监听特定的网络变化函数
// 监听网络切换到wifi
@OnNetworkTypeChangedTo(type = NETWORK_WIFI)
void onWifiConnected() {
Toast.makeText( this, "NetworkStateChanged>>>WIFI", Toast.LENGTH_SHORT).show();
}
// 监听网络切换到移动网络
@OnNetworkTypeChangedTo(type = NetworkTypeEnum.NETWORK_MOBILE)
void onMobileNetworkConnected() {
Toast.makeText(this, "NetworkStateChanged>>>Mobile networks", Toast.LENGTH_SHORT).show();
}
复制代码
在app主界面中止网络监听 在退出app时,即在app的Activity栈的最后一个Activity的onDestroy方法中中止网络监听,lib中也就是注销网络监听广播。gradle
@Override
protected void onDestroy() {
super.onDestroy();
// 在app主界面/栈中最后一个Activity中止网络监听
NetworkStateWatcher.getDefault().stopWatch();
}
复制代码
也没用什么高大上的技术,观察者、注解、反射、广播接收者。仅此而已,但却能够简化业务层代码,方便你我他。 AndroidNetworkWatcher:github.com/xiong-it/An…ui
// TODOthis