一.一般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应用程序框架思路整理的更多相关文章

  1. Android核心分析之二十Android应用程序框架之无边界设计意图

    Android应用程序框架1 无边界设计理念 Android的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fu ...

  2. Android应用程序框架层和系统运行库层日志系统源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少 ...

  3. Android应用程序框架之无边界设计意图

    Android的应用框架的外特性空间的描述在SDK文档有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述.在外特性空间中,Android提供了Activity,Service ...

  4. android 应用程序框架

    携带Android软件开发时间,由开发商开发Android应用程序是通过应用程序框架和Android底层交互,因此,发展以达到最大的部分是应用程序框架. 应用集成框架 那里4一个重要组成部分,以下. ...

  5. Android热修复框架汇总整理(Hotfix)

      Android平台出现了一些优秀的热更新方案,主要可以分为两类:一类是基于multidex的热更新框架,包括Nuwa.Tinker等:另一类就是native hook方案,如阿里开源的Andfix ...

  6. Android 亮度调节功能开发思路整理

    做 Android 音视频播放器开发的时候,我们基本都会遇到一类需求:音量 & 亮度 调节.其中做亮度调节功能的时候,发现还是有一定复杂度的. Android亮度调节分为两个类,分别是: An ...

  7. Android应用程序线程消息循环模型分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是 ...

  8. Android应用程序键盘(Keyboard)消息处理机制分析

    在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形 式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的:在上一篇文章< ...

  9. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

随机推荐

  1. supportRequestWindowFeature与requestWindowFeature

    在Activity中去掉标题栏只需要在onCreate()中在setContentView前使用requestWindowFeature(). 在AppCompatActivity中去掉标题栏只需要在 ...

  2. jQuery.unique引发一个血案

    项目开发过程中,PM说系统只要在一个特定的浏览器中运行就好,但是在其他的浏览器中不能出现逻辑的错误,所以在开发过程中,前端和后台选择是Chrome浏览器,没有仔细测试Firefox和IE.但是昨天PM ...

  3. linux标准IO缓冲(apue)

    为什么需要标准IO缓冲? LINUX用缓冲的地方遍地可见,不管是硬件.内核还是应用程序,内核里有页高速缓冲,内存高速缓冲,硬件更不用说的L1,L2 cache,应用程序更是多的数不清,基本写的好的软件 ...

  4. CSS3中惊艳的gradient

    以前曾经记录过linear-gradient(线性渐变)和 radial-gradient(径向渐变)的语法. 可以参考<CSS3中border-radius.box-shadow与gradie ...

  5. ORA-00257 archiver error 处理思路

    1.首先查下oerr给出的简要说明 2.查询V$RECOVERY_AREA_USAGE信息 3.根据实际空间剩余情况先适当增加归档目录的大小,保证先恢复业务 4.查看备份是否存在问题 1.首先查下oe ...

  6. Cesium原理篇:7最长的一帧之Entity(上)

    之前的最长的一帧系列,我们主要集中在地形和影像服务方面.简单说,之前我们都集中在地球是怎么造出来的,从这一系列开始,我们的目光从GLOBE上解放出来,看看球面上的地物是如何渲染的.本篇也是先开一个头, ...

  7. DotNet处理服务器路径的方法

    项目中需要使用到路径处理的地方比较多,对于路径的解析和匹配有时较为繁琐,现在提供一个对路径进行解析的方法: 1.验证设置路径字符串: /// <summary> /// 验证设置路径字符串 ...

  8. ime-mode:disabled 关闭文本框输入法

    在用户输入数字的表单中,需要禁止用户输入中文.符号等,减少用户输入出错误的可能性,CSS可以实现此功能. ime-mode的语法解释如下: ime-mode : auto | active | ina ...

  9. URL的组成格式

    最近在学习js的Ajax方面的内容,发现自己对基础的计算机网络知识认识不足,所以大概了解了下. URL组成格式 图中中括号是可选项 protocol 协议,常用的协议是http hostname 主机 ...

  10. 我的angularjs源码学习之旅2——依赖注入

    依赖注入起源于实现控制反转的典型框架Spring框架,用来削减计算机程序的耦合问题.简单来说,在定义方法的时候,方法所依赖的对象就被隐性的注入到该方法中,在方法中可以直接使用,而不需要在执行该函数的时 ...