一.概述
这篇文章主要针对coding android项目的开源代码。这个项目是深圳的一个公司的开源项目,属于工业级别代码,代码质量比较高。对我启发比较大:包括基类的设计、网络请求的设计、红点提醒的设计、即时通讯的实现方案、缓存的设计等等,很值得阅读和学习。即时通讯它采用的轮询的方式,这种方式虽然比较耗费流量和电量,但是因为它只在聊天页面做轮询,离开这个页面,就会停止轮询,所以也不会耗费太多的流量和电量。不过即时通讯更好的实现方案还是推送,如何在客户端本地建立长连接,然后如何利用守护进程使进程保活,如何设计心跳包,这些才是最好的方案。
主要流程:先进入EntranceActivity,然后进入MainActivity.
二.架构概念模型
三.界面层、业务层
Activity
框架的设计目的是增加复用,把一些公共的操作封装到基类中。这里主要是把网络请求的方法(包括数据和图片)和请求成功的回调方法封装到了基类中,并且为了满足单一职责的原则,与网络相关的一些处理还是封装在了NetworkImpl类中,这样是满足合成复用原则的,使用组合或聚合的方式可以将已有的对象(也可称为成员对象)纳入到新对象中,使之称为新对象的一部分,因此新对象可以调用已有对象的功能,这样做可以使得成员对象的内部实现细节对新对象的影响不大,可以在新对象中根据实际需要有选择的调用成员变量的操作。有没有觉得这种设计很熟悉,对,android框架中的activity中就包含了一个decorview,也是类似的设计规则。
application
fragment
与baseactivity一样,这里不再分析
四.本地数据层
sharepreference、文件缓存、数据库缓存
AccountInfo:保存数据到本地,包括用户数据和全局数据
这个需要好好的分析一下,包括源码分析也要上来
请求成功后会把请求的url作为名字来保存response这个json数据到本地
这样缓存就起到作用了
相当于自己设计实现了二级缓存呗
我们日常使用的volley把这些都做了,但是导致我们的缓存也是没啥作用了。
失败的时候会把本地的缓存给程序使用
AccountInfo.saveGetRequestCache(appContext, cacheName, response);
五.网络层
即网络框架采用的是AsyncHttpClient
六.基础层
七.一些重要类的设计
缓存的设计
红点通知系统的设计
即时通讯页面的设计
让你的app拥有design风格
用的是一个FloatingActionButton,自己实现的
继承自v7包中的appcompantactivity