鲜苹果
时间:2018-07-20 02:02:05来源:杰瑞文章网点击:作文字数:300字
作文导读:
WechatIMG294.jpeg
欢迎大家下载我个人开发的app安琪花园
为什么我说一行代码就能实现网络监听呢?
image.png
本人总结按照 “结论先行, 详细分析在后” 的逻辑,
先让大家的感性的认识, 然后理性的分析
结果
只需要在想要监听网络变化的方法上面添加相应的注解即可。
具体的实现原理,大家也可以参考EventBus通过Apt技术是如何实现。
为什么要将网络监听封装成一个库
网络监听可以说是在app中基本上会遇到的一个功能。
就我目前开发的项目而言,到处都在写网络监听的代码,感觉相当麻烦,
而且 代码冗余, 提高了耦合性,而且代码可读性也下降了。
自从写了这个库以后,以后项目里面要监听网络变化只需要添加注解即可
具体是如何使用的呢?
在项目的根目录下面的build.gralde添加maven仓库。
maven { url "https://dl.bintray.com/richzjc/maven" }
其次是在module的build.gradle引用
如果项目用的kotlin 请将annotationProcessor 改成kapt
annotationProcessor 'com.richzjc:netChange_compiler:1.0.8'
implementation 'com.richzjc:network_change:1.0.5'
因为项目使用了apt的技术,在编译期会生成类,
因此需要在对应module下面的gradle文件添加如下配置
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
则最后会生成NetChanger的类:
如:
public class NetChanger implements SubscribeInfoIndex {
private static final Map SUBSCRIBER_INDEX;
static {
SUBSCRIBER_INDEX = new HashMap();
List availableList;
List loseList;
List changeList;
availableList = new ArrayList();
loseList = new ArrayList();
changeList = new ArrayList();
availableList.add(new SubscribeMethod("test1", null));
loseList.add(new SubscribeMethod("test", null));
changeList.add(new SubscribeMethod("test2", NetType.AUTO));
changeList.add(new SubscribeMethod("test3", NetType.WIFI));
SUBSCRIBER_INDEX.put(MainActivity.class, new SimpleSubscribeInfo(availableList, loseList, changeList));
}
@Override
public Map getSubscriberInfo() {
return SUBSCRIBER_INDEX;
}
}
在使用这个库的时候需要在对应的Application下面初始化:
将apt生成的类添加到NetManager里面。 然后调用init方法
NetManager.addIndex(new NetChanger());
NetManager.init(this);
最后如果在MainActivity里面想要添加网络监听,则需要在MainActivity里面
添加注册与 反注册的方法:
如: 在Oncreate里面添加注册:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NetManager.bind(this);
}
一般在ondestroy方法里面添加反注册
@Override
protected void onDestroy() {
super.onDestroy();
NetManager.unBind(this);
}
如果按照以上配置好了。 那么在MainActivity里面添加的代码
就能够监听到网络的变化。
详细说明
NetAvailable
监听到有网络
NetLose
监听没有网络
NetChange
该注解需要传一个netType
netType有四个取值可能
public enum NetType {
AUTO, WIFI, MOBILE, NONE;
}
当netType传为AUTO 就相当于NetAvailable
当netType传为NONE就相当于 NetLose
当netType传为MOBILE就相当于 监听除wifi以外的网络
当netType传为WIFI就相当于 监听wifi
gitHub地址
相关文章
kotlin DSL开发
android 面试题
android 夜间模式的切换
快速获取Bundle里面参数
android EventBus源码阅读
AOP之动态代理原理
Handler源码理解
IOC框架之Dagger详解
多学总比少学好
所谓 面试造飞机, 入职拧螺丝。 这句话一点也不假, 面试时的技术不仅仅 是 要学会用, 还得要知其原理。懂其原理,才能区分其技术水平, 而作为android开发的我们, java作为我们的开发语言。 所以面试官往往会问一些java底层的原理。这其中包括, java 多线程, 各种各样的锁机制, 以及cas, 原子性 的问题。
最近我在学习了这门课程后,发现确实还不错。对以后的面试的帮助还是蛮不错的。
WechatIMG293.jpeg
WechatIMG294.jpeg
欢迎大家下载我个人开发的app安琪花园
为什么我说一行代码就能实现网络监听呢?
image.png
本人总结按照 “结论先行, 详细分析在后” 的逻辑,
先让大家的感性的认识, 然后理性的分析
结果
只需要在想要监听网络变化的方法上面添加相应的注解即可。
具体的实现原理,大家也可以参考EventBus通过Apt技术是如何实现。
为什么要将网络监听封装成一个库
网络监听可以说是在app中基本上会遇到的一个功能。
就我目前开发的项目而言,到处都在写网络监听的代码,感觉相当麻烦,
而且 代码冗余, 提高了耦合性,而且代码可读性也下降了。
自从写了这个库以后,以后项目里面要监听网络变化只需要添加注解即可
具体是如何使用的呢?
在项目的根目录下面的build.gralde添加maven仓库。
maven { url "https://dl.bintray.com/richzjc/maven" }
其次是在module的build.gradle引用
如果项目用的kotlin 请将annotationProcessor 改成kapt
annotationProcessor 'com.richzjc:netChange_compiler:1.0.8'
implementation 'com.richzjc:network_change:1.0.5'
因为项目使用了apt的技术,在编译期会生成类,
因此需要在对应module下面的gradle文件添加如下配置
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
则最后会生成NetChanger的类:
如:
public class NetChanger implements SubscribeInfoIndex {
private static final Map SUBSCRIBER_INDEX;
static {
SUBSCRIBER_INDEX = new HashMap();
List availableList;
List loseList;
List changeList;
availableList = new ArrayList();
loseList = new ArrayList();
changeList = new ArrayList();
availableList.add(new SubscribeMethod("test1", null));
loseList.add(new SubscribeMethod("test", null));
changeList.add(new SubscribeMethod("test2", NetType.AUTO));
changeList.add(new SubscribeMethod("test3", NetType.WIFI));
SUBSCRIBER_INDEX.put(MainActivity.class, new SimpleSubscribeInfo(availableList, loseList, changeList));
}
@Override
public Map getSubscriberInfo() {
return SUBSCRIBER_INDEX;
}
}
在使用这个库的时候需要在对应的Application下面初始化:
将apt生成的类添加到NetManager里面。 然后调用init方法
NetManager.addIndex(new NetChanger());
NetManager.init(this);
最后如果在MainActivity里面想要添加网络监听,则需要在MainActivity里面
添加注册与 反注册的方法:
如: 在Oncreate里面添加注册:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
NetManager.bind(this);
}
一般在ondestroy方法里面添加反注册
@Override
protected void onDestroy() {
super.onDestroy();
NetManager.unBind(this);
}
如果按照以上配置好了。 那么在MainActivity里面添加的代码
就能够监听到网络的变化。
详细说明
NetAvailable
监听到有网络
NetLose
监听没有网络
NetChange
该注解需要传一个netType
netType有四个取值可能
public enum NetType {
AUTO, WIFI, MOBILE, NONE;
}
当netType传为AUTO 就相当于NetAvailable
当netType传为NONE就相当于 NetLose
当netType传为MOBILE就相当于 监听除wifi以外的网络
当netType传为WIFI就相当于 监听wifi
gitHub地址
相关文章
kotlin DSL开发
android 面试题
android 夜间模式的切换
快速获取Bundle里面参数
android EventBus源码阅读
AOP之动态代理原理
Handler源码理解
IOC框架之Dagger详解
多学总比少学好
所谓 面试造飞机, 入职拧螺丝。 这句话一点也不假, 面试时的技术不仅仅 是 要学会用, 还得要知其原理。懂其原理,才能区分其技术水平, 而作为android开发的我们, java作为我们的开发语言。 所以面试官往往会问一些java底层的原理。这其中包括, java 多线程, 各种各样的锁机制, 以及cas, 原子性 的问题。
最近我在学习了这门课程后,发现确实还不错。对以后的面试的帮助还是蛮不错的。
WechatIMG293.jpeg

鲜苹果一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!
杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。
说说你对这篇作文的看法吧