二:在开放的过程中,尽量把工具类,BaseActivity 放在指定的位置。

DateFormat

Bitmap

Notification

Shared Preference

Environment

Device

三:

2.2 Task管理

线程仅仅是一种机制,保证我们要完毕的任务不执行在UI线程(也就是说不堵塞UI)。完毕的任务才是我们关注的核心。因此,我们能够通过设计,把线程封装,让使用者根本感觉不到是线程,他仅仅用关心他要做的事情即可了。

这里,我们能够设计一种”异步链式调用”的框架。把线程进行了封装。使用都仅仅须要这样用:

1
2
3
4
5
new TaskManager()
.next(task1)
.next(task2)
.next(task3).
.execute();

这里。task1, task2, task3是顺序运行的,举个样例:我们要訪问网络。取得一个图片。使用这个TaskManager我们须要3个task,

task1:显示一个ProgressDialog。

task2:訪问网络,创建bitmap。

task3:关闭对话框,显示bitmap。

这一点,能够參考CoreLibproject中的task.TaskManager类。

关于TaskManager,有下面几点须要注意:

-封装了线程

让调用者仅仅关注自己的业务处理

保证顺序链式地运行某一个任务

上一个任务的输出,作为下一个任务的输入

能暂停、恢复不论什么一个任务

四:

2.3 缓存设计

-把内存占用量大的对象存放在缓存中,如bitmap

利用了LruCache类来实现

利用了AsyncTask类来载入bitmap

不用再手动释放bitmap内存,该操作有风险

不用再关心AbsListView的scroll状态

关于缓存的很多其它具体细节,请參考[ 请參考CoreLibproject中的cache包 ]。

这样做,有什么优点。 不用再手动释放bitmap内在。该操作有风险,由于该bitmap是否有View引用,假设当一个View在试图绘制一个已经回收的bitmap。这里会抛出异常。

五:

2.4 线程管理

无消息循环的线程:

1
2
3
4
5
6
new Thread(null, new Runnable() {
public void run() {
// Do you works.
} }, "Thread_name_xxx").start();

什么情况下使用这样的线程:

-做完一件事情就结束,这件事发生频率不高。比方从SD card中读取图片数据

不须要复用线程

在使用线程,最好给线程加上名字。这样利用高度与跟踪。

有消息循环的线程:

这种线程拥有消息循环,当消息队列中没有消息时。这个线程会被挂起。我们要做一件事情时。仅仅须要给它发送一个消息即可了。

这样的情况一般是为了复用线程,不用频繁创建线程,比方音乐播放器程序。专门启动一个有消息循环的线程来获得音乐的专辑图片。

我们通常还要创建一个与这个线程的消息循环(Looper)相关联的Handler。由它来处理消息,注意。这做的事情是执行在后台线程的。

android app 架构设计02的更多相关文章

  1. Android APP架构设计——MVP的使用示例

    0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...

  2. Android APP架构设计——MVC、MVP和MVVM介绍

    )对于过大的项目,数据绑定需要花费更多的内存. 关于APP的架构设计就介绍到这吧,转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/529 ...

  3. android app 架构设计01

    1:本文有摘抄, 1 2 3 4 5 - 开发过程中.需求.设计.编码的一致性 - 整个程序具有统一的风格,比方对话框样式,button风格,色调等UI元素 - 整个程序详细统一的结构,比方不同模块訪 ...

  4. Android App的设计架构:MVC,MVP,MVVM与架构经验谈

    相关:http://www.cnblogs.com/wytiger/p/5996876.html 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于 ...

  5. Android App的设计架构:MVC,MVP,MVVM与架构AAAAA

    1. 架构设计的目的1.1 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.1.2 这样做的好处是使得程序在开发的过程中,开发人员只需要专注于一点,提高程序开发的效率,并且更容易进行后续 ...

  6. 【转】App架构设计经验谈:接口的设计

    App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 安全机制的设计 现在,大部分App的接口都采用REST ...

  7. Hybrid APP 架构设计思路

    关于Hybrid模式开发app的好处,网络上已有很多文章阐述了,这里不展开. 本文将从以下几个方面阐述Hybrid app架构设计的一些经验和思考. 原文及讨论请到 github issue 通讯 作 ...

  8. App架构设计经验谈:接口”安全机制”的设计

    [原文地址 点击打开链接] 原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/architecture/20160107 微信订阅号:ke ...

  9. App架构设计学习(一)---- 接口的设计

    一.哎,最近换了家工作,结果工作很出的我意外,没有干熟悉的根据需求写代码,反而让我一个小菜鸟去重构一下App的架构(他们公司的app,已经上线了1.0版本了),没办法,只有硬着头皮去先学习学习,再总结 ...

随机推荐

  1. UVA 11292 - The Dragon of Loowater (water)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=sh ...

  2. exe4教程

    exe4j_windows-x64_5_0_1.exe <?xml version="1.0" encoding="UTF-8"?> <exe ...

  3. vi/vim高级命令集粹

    vi/vim高级命令集粹 (ctrl +v过来 留着以后看) 1.交换两个字符位置 xp 2.上下两行调换 ddp 3.把文件内容反转 :g/^/m0/ (未通过) 4.上下两行合并 J 5.删除所有 ...

  4. Spring 从零開始-05

    最终能到Spring的AOP编程了,AOP的概念特别的多.所以须要你在開始之前有点了解,然后通过代码慢慢学习! - 切面(Aspect):一个关注点的模块化,这个关注点实现可能另外横切多个对象.事务管 ...

  5. ubuntu下使用charles代理

    charles 最新的版本是3.10,但是这个版本还没有license可以用,所以使用3.9.2版本. 解压缩包就可以用了. 如果只是代理http请求,只要设置: Proxy -> Proxy ...

  6. 初入Android--Activate生命周期

    Activate的主要生命周期 (注意:这只是主要的生命周期,而不是完整的生命周期方法,其中的两个周期之间可能还执行了其他的一些方法) 每个时刻在屏幕上的状态 进入onCreate方法:Activat ...

  7. [Java Performance] 数据库性能最佳实践 - JPA缓存

    JPA缓存(JPA Caching) JPA有两种类型的缓存: EntityManager自身就是一种缓存.事务中从数据库获取的和写入到数据库的数据会被缓存(什么样的数据会被缓存.在后面有介绍).在一 ...

  8. ORA-00942:表或视图不存在(低级错误)

    在好多时候.调试PL/SQL对象时会报.ORA-00942 看看错误原因吧: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFjc29uX2JhaQ== ...

  9. 【Ubuntu】升到14,攻克了进入用户后没有菜单条导航栏的问题

    控制台还能够进,用ctrl+alt+f1用老账号登录,用sudo adduser test新建立一个名字叫test的帐号 然后就能够进去了,可能是配置文件坏掉了

  10. Java设计模式---外观模式

    外观模式(Facade) 外观模式的意图是:为子系统提供一个接口,便于它的使用.   解释: 简单的说,外观模式就是封装多个上层应用需要的方法,使得上层调用变得简单,为上层提供简单的接口,是设计模式中 ...