[转]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 应用程序框架层创 ...
随机推荐
- 用 namspace 隔离 DHCP 服务 - 每天5分钟玩转 OpenStack(90)
Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 如何独立的为每个 network 服务呢? 答案是通过 Linux Network Namespace 隔离,本节将详细 ...
- ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?
前言 事情不太多时,会时不时去看项目中同事写的代码可以作个参考或者学习,个人觉得只有这样才能走的更远,抱着一副老子天下第一的态度最终只能是井底之蛙.前两篇写到关于断点传续的文章,还有一篇还未写出,后续 ...
- 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)
前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操作都是可以通用的,可以把这部分操作抽取到 ...
- Hammer.js分析(四)——recognizer.js
不同识别器会使用不同逻辑,根据从相关Input类获取到的事件对象和事件,实现自定义的触屏事件,例如tap.pinch等. 一.继承关系 Recognizer与前面的Input一样,也相当于是个抽象类. ...
- 记录一则数据库连接故障ORA-12560,ORA-12518
环境:Win Server 2008 R2 + Oracle 11.2.0.1 故障:客户反映数据库连接不上,本机sysdba和网络连接都连接不上. 一.确认故障 1.1 服务器尝试sysdba登录 ...
- css学习--css基础
学习慕课网笔记,课程:http://www.imooc.com/code/2024 1.css选择器 子选择器:parent>child 子选择器是指选择parent的范围内的第一个子元素.这里 ...
- 基于OBS的插件开发总结
一.介绍 OBS(Open Broadcaster Software)是一个广泛使用的视频录制直播软件.利用该软件可以实现桌面窗口.游戏.网页.RTMP流.图像等的录制直播.OBS也是一个开放源代码的 ...
- 关系数据库常用SQL语句语法大全
创建表 语法 CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条 ...
- jquery easyui使用(二)······可折叠面板动态加载无效果
先上代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"& ...
- jQuery实现手机竖直手风琴效果
效果:http://hovertree.com/texiao/jquery/65/ 效果图: 手机扫描二维码查看效果: 代码: <!doctype html> <html lang= ...