二:在开放的过程中,尽量把工具类,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. IOS引导页的编写

    我们在第一次打开App的时候,通常不是直接进入App主界面,而是会有一个能左右滑动.介绍App功能的界面.我是用NSUserDefaults + UIScrollview实现. 新建一个类,继承UIV ...

  2. ios9 之后 配置百度地图出现的错误

    链接地址:http://blog.csdn.net/u011303663/article/details/48596315 错误 ld: '/Users/xxx/Documents/xxx/Baidu ...

  3. 学习笔记之NodeJs基本操作

    nodejs安装见文章:windows下安装node.js及less 运行js文件:node xxx.js 调用http模块,并指定端口为3000,向客户端输出<h1>Node.js< ...

  4. VC环境下编译OpenSSL(仅仅是个示例,网上还有许多相关文章)

    VC环境OpenSSL安装以及编程过程 SSL就是Secure Sockets Layer,是一种安全套接字协议,详情请参考链接中的介绍. 配置过程中需要生成一些mak文件,这些生成代码用perl脚本 ...

  5. Windows Azure入门教学系列 (七):使用REST API访问Storage Service

    本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...

  6. ubuntu 安装maven提示出错 The program &#39;mvn&#39; can be found in the following packages

    问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then ...

  7. 最长公共子序列python实现

    最长公共子序列是动态规划基本题目,以下依照动态规划基本步骤解出来. 1.找出最优解的性质,并刻划其结构特征 序列a共同拥有m个元素,序列b共同拥有n个元素,假设a[m-1]==b[n-1],那么a[: ...

  8. N-Queens And N-Queens II [LeetCode] + Generate Parentheses[LeetCode] + 回溯法

    回溯法 百度百科:回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步又一次选择,这样的走不通就退回再走的技术为回溯法 ...

  9. spring boot application properties配置详解

    # =================================================================== # COMMON SPRING BOOT PROPERTIE ...

  10. linux系统日志及其rsyslog服务

    日志是系统用来记录系统运行时候的一些相关消息的纯文本文件 /var/log下保存着大量的纯文本日志文件 日志的目的是为了保持相关程序的运行状态,错误消息,为了对系统运行进行错误分析使用 1.内核消息 ...