鲜苹果

时间: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
作文投稿

鲜苹果一文由杰瑞文章网免费提供,本站为公益性作文网站,此作文为网上收集或网友提供,版权归原作者所有,如果侵犯了您的权益,请及时与我们联系,我们会立即删除!

杰瑞文章网友情提示:请不要直接抄作文用来交作业。你可以学习、借鉴、期待你写出更好的作文。

鲜苹果相关的作文:

说说你对这篇作文的看法吧