zoukankan      html  css  js  c++  java
  • 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

    http://www.woaipu.com/shops/zuzhuan/61406
    http://www.znds.com/tv-967956-1-1.html
    http://www.znds.com/tv-967958-1-1.html

    http://www.woaipu.com/shops/zuzhuan/61406
    http://www.znds.com/tv-967956-1-1.html
    http://www.znds.com/tv-967958-1-1.html

  • 相关阅读:
    poj 3621(最优比率环)
    bzoj 1497(最大权闭合子图)
    Dinic(模板 再错是不可能的 这辈子都不可能了)
    BZOJ 2038
    zoj 3822(概率dp)
    poj 3683(2-sat+拓扑排序)
    poj 2186(tarjan+缩点)
    hdu 5782(kmp+hash)
    hdu 6035(树形dp)
    Python爬取房屋租售信息
  • 原文地址:https://www.cnblogs.com/sy646et/p/7198066.html
Copyright © 2011-2022 走看看