AndroidNetworkWatcher:简化网络监听业务代码
Posted MichaelX_Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidNetworkWatcher:简化网络监听业务代码相关的知识,希望对你有一定的参考价值。
前言
android开发中经常遇到需要监听网络变化的场景,比如播放,比如访问网络时进行断网提示,于是有了今天的AndroidNetworkWatcher。
项目地址
AndroidNetworkWatcher:https://github.com/xiong-it/AndroidNetworkWatcher
技术原理
主要是将网络变化监听广播进行了封装,同时定义运行时注解,在网络变化时调用业务层代码,通知网络变化。
用法
由于还没上传到jcenter,无法通过gradle远程依赖,读者可以自行下载源码本地依赖,或者参考源码自己封装。
- 在Application中初始化Watcher:
public class App extends Application
@Override
public void onCreate()
super.onCreate();
NetworkStateWatcher.getDefault().init(this);
- 注册观察者,以Activity举例
@Override
protected void onStart()
super.onStart();
// 注册网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().registerObserver(this);
- 注销观察者,以Activity举例
@Override
protected void onStop()
super.onStop();
// 注销网络监听,传入Object类型参数
NetworkStateWatcher.getDefault().unRegisterObserver(this);
-
定义接收网络变化的函数(2种方法)
4.1 第一种:监听所有网络变化
/** * 网络发生变化 * * @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中也就是注销网络监听广播。@Override protected void onDestroy() super.onDestroy(); // 在app主界面/栈中最后一个Activity停止网络监听 NetworkStateWatcher.getDefault().stopWatch();
结语
也没用什么高大上的技术,观察者、注解、反射、广播接收者。仅此而已,但却可以简化业务层代码,方便你我他。
AndroidNetworkWatcher:https://github.com/xiong-it/AndroidNetworkWatcher
// TODO
- 上传到jcenter仓库,方便gradle远程依赖
- 利用apt或者tranform进一步简化业务代码
- 收集issue意见,欢迎讨论交流
以上是关于AndroidNetworkWatcher:简化网络监听业务代码的主要内容,如果未能解决你的问题,请参考以下文章