[转]Android应用程序框架思路整理
一.一般Android应用程序架构(Book,购彩,Market)。

普通的应用程序由于只需要用到Android的联网与显示的功能,所以应用程序大体上是呈现为UI(Activities)与网络(Network)等其他模块进行绑定,数据交互的应用程序。
优点: (1)此种是一种通用的类J2ME的应用开发模式,被开发者所熟悉,可以很快上手。
(2)应用比较灵活,小型。
(3)可以满足大部分基于网络数据获取的应用程序。
缺点: (1)不能监控到系统广播服务
(2)不能提供Open API供其他应用程序进行交互
(3)所有模块(如网络等)的生命周期依赖于其所属的Activity的生命周期。
二.Android提供的四大应用程序组件
接下来介绍一下Android提供的四个通用的应用程序组件以及其职责。

Activity:
(1) 应用程序的入口
(2) 界面显示,接收事件(如按键),控制显示跳转。
BroadcastReceiver:
(1) 用于注册和接收系统广播的事件
(2) 可接收自定义的广播事件。
ContentProvider:
(1) 提供数据库查询接口
(2) 可对外(其他应用程序)公开数据查询服务。
Service:
(1) 是一个独立的进程,可一直在后台运行。
(2) 可以与其他组件(如Acitivity,Service,ContentProvider)通过远程连接绑定(bind)进行交互。
(3) 可对外(其他应用程序)提供服务交互接口。
(4) 生命周期不依赖于其他组件的存在与否。
三.Service与Acitivity进行交互

Service与其他组件进行通讯是通过AIDL远程接口进行绑定之后进行通信,分别在不同的组件内部创建不同的接口的实现类,通过服务连接器进行交互(ServiceConnection)此种方式可用于不同进程间进行交互,相对比较麻烦一些。
四.Android手机心脏适用的应用程序框架思路

由上图可看出,心脏应用程序框架主要分为三层:UI层(Activities层),调度层(Dispatch层)和应用服务层(Services层)。(比较类似于MVC的设计模式)
1. 相对于一般框架的区别
(1)引入了Android提供的其他两大组件:服务(Service)和广播接收器(Receiver),用于在后台一直运行一些监控程序(类似于symbian心脏中的WatchEngine.exe)和接收系统事件。
(2)提供了对外部应用程序访问的接口,有助于手机心脏将来为其他应用程序提供平台与服务。
2. 三层结构的职责归属与交互方式
|
层次 |
组成 |
职责 |
与其他层次交互模式 |
|
UI层 |
Activities,Views |
负责应用程序UI显示 负责进行跳转 与调度层进行交互 负责控制调度层对服务进行管理 |
只能与调度层进行交互,不可见服务层。 |
|
调度层 |
由服务管理模块,服务绑定模块, 消息转发模块, 异常通知模块组成 |
负责与后台服务的绑定与通信 负责处理UI层的请求 负责管理服务层相关服务 负责管理应用程序的异常输出。 |
与UI层通过本地接口进行交互。 与应用服务层通过远程接口AIDL进行通信。 |
|
应用服务层 |
由Service,Receiver,ContentProvider组成 |
负责与系统进行通信。 负责监控系统行为并处理。 负责与调度层进行消息通信。 |
与调度层通过远程接口AIDL进行通信,返回计算结果/事件等。 |
3. 优点与缺点
优点: (1)充分利用Android平台提供的组件达到使用需求(如监控系统事件,保持服务一直运行等),更本地化。
(2)可以应用系统性比较强的应用程序。
缺点: (1)AIDL进行交互比较繁琐。
[转]Android应用程序框架思路整理的更多相关文章
- Android核心分析之二十Android应用程序框架之无边界设计意图
Android应用程序框架1 无边界设计理念 Android的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fu ...
- Android应用程序框架层和系统运行库层日志系统源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少 ...
- Android应用程序框架之无边界设计意图
Android的应用框架的外特性空间的描述在SDK文档有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述.在外特性空间中,Android提供了Activity,Service ...
- android 应用程序框架
携带Android软件开发时间,由开发商开发Android应用程序是通过应用程序框架和Android底层交互,因此,发展以达到最大的部分是应用程序框架. 应用集成框架 那里4一个重要组成部分,以下. ...
- Android热修复框架汇总整理(Hotfix)
Android平台出现了一些优秀的热更新方案,主要可以分为两类:一类是基于multidex的热更新框架,包括Nuwa.Tinker等:另一类就是native hook方案,如阿里开源的Andfix ...
- Android 亮度调节功能开发思路整理
做 Android 音视频播放器开发的时候,我们基本都会遇到一类需求:音量 & 亮度 调节.其中做亮度调节功能的时候,发现还是有一定复杂度的. Android亮度调节分为两个类,分别是: An ...
- Android应用程序线程消息循环模型分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是 ...
- Android应用程序键盘(Keyboard)消息处理机制分析
在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形 式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的:在上一篇文章< ...
- Android应用程序进程启动过程的源代码分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...
随机推荐
- VMware Tools的简易安装---解决Ubuntu 14.10不能满屏显示问题
由于使用的VMware WorkStation是中文破解版,安装时又是简易安装,因此VMware Tools并没有安装上,导致Ubuntu 14.10在VMware中装上之后,并不能满屏显示,如图1所 ...
- 自定义配置UEditor 工具栏上的按钮列表
修改配置项的方法: 1. 方法一:修改 ueditor.config.js 里面的 toolbars 2. 方法二:实例化编辑器的时候传入 toolbars 参数 方法一:在ueditor.confi ...
- 【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 上个月 ...
- 【开源】OSharp框架解说系列(6.1):日志系统设计
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- 认识AMD、CMD、UMD、CommonJS
0.导言 JavaScript的生态系统一直在稳步增长,当各种组件混合使用时,就可能会发现不是所有的组件都能“和平共处”,为了解决这些问题,各种模块规范就出来了. 1.AMD(Asynchromous ...
- Delegate、Predicate、Action和Func
写在前面 Delegate Predicate Action Func 逆变和协变 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法 ...
- 记录一则ORA-12154,ORA-12560解决过程
应用服务器:Windows Server 2008 R2 Enterprise 故障现象:项目侧同事反映应用服务器上的程序连接数据库报错:ORA-12560: TNS: 协议适配器错误 1.故障重现 ...
- idea 自动提示生成 serialVersionUID
from: http://tonycody.blog.51cto.com/8421818/1401422 Intellij IDEA 默认没启用这个功能. Setting->Inspection ...
- 数据结构(c语言第2版)-----了解链表,栈,队列,串
关于链表我觉得这都是最基本的东西,但是不常见,在实际的应用中很少的使用,了解它会用就OK,不需要研究的那么深,除非做那种内存压缩,存储方面工作. C语言中动态申请空间 malloc() q=(dlin ...
- Nancy之结合TinyFox调试备忘
最近把一个小项目的数据库换成MongoDB,同时用了MongoRepository 这个开源组件来对数据进行操作. 通过NuGet安装之后,它会自动在web.config文件生成一个连接字符串.但是却 ...