coding源码分析:架构篇(待再更新)

一.概述

这篇文章主要针对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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值