文档详情

Android应用程序框架思路.doc

发布:2018-12-28约1.01万字共17页下载文档
文本预览下载声明
1.Android应用程序框架思路整理 一.一般Android应用程序架构 普通的应用程序由于只需要用到Android的联网与显示的功能,所以应用程序大体上是呈现为UI(Activities)与网络(Network)等其他模块进行绑定,数据交互的应用程序。 优点: (1)此种是一种通用的类J2ME的应用开发模式,被开发者所熟悉,可以很快上手。 (2)应用比较灵活,小型。 (3)可以满足大部分基于网络数据获取的应用程序。 缺点: (1)不能监控到系统广播服务 (2)不能提供Open API供其他应用程序进行交互 (3)所有模块(如网络等)的生命周期依赖于其所属的Activity的生命周期。 二.Android提供的四大应用程序组件 接下来介绍一下Android提供的四个通用的应用程序组件以及其职责。 Activity: 应用程序的入口 界面显示,接收事件(如按键),控制显示跳转。 BroadcastReceiver: 用于注册和接收系统广播的事件 可接收自定义的广播事件。 ContentProvider: 提供数据库查询接口 可对外(其他应用程序)公开数据查询服务。 Service: 是一个独立的进程,可一直在后台运行。 可以与其他组件(如Acitivity,Service,ContentProvider)通过远程连接绑定(bind)进行交互。 可对外(其他应用程序)提供服务交互接口。 生命周期不依赖于其他组件的存在与否。 三.Service与Acitivity进行交互 Service与其他组件进行通讯是通过AIDL远程接口进行绑定之后进行通信,分别在不同的组件内部创建不同的接口的实现类,通过服务连接器进行交互(ServiceConnection)此种方式可用于不同进程间进行交互,相对比较麻烦一些。 三.Android手机心脏适用的应用程序框架思路 由上图可看出,心脏应用程序框架主要分为三层:UI层(Activities层),调度层(Dispatch层)和应用服务层(Services层)。(比较类似于MVC的设计模式) 相对于一般框架的区别 (1)引入了Android提供的其他两大组件:服务(Service)和广播接收器(Receiver),用于在后台一直运行一些监控程序(类似于symbian心脏中的WatchEngine.exe)和接收系统事件。 (2)提供了对外部应用程序访问的接口,有助于手机心脏将来为其他应用程序提供平台与服务。 三层结构的职责归属与交互方式 层次 组成 职责 与其他层次交互模式 UI层 Activities,Views 负责应用程序UI显示 负责进行跳转 与调度层进行交互 负责控制调度层对服务进行管理 只能与调度层进行交互,不可见服务层。 调度层 由服务管理模块,服务绑定模块, 消息转发模块, 异常通知模块组成 负责与后台服务的绑定与通信 负责处理UI层的请求 负责管理服务层相关服务 负责管理应用程序的异常输出。 与UI层通过本地接口进行交互。 与应用服务层通过远程接口AIDL进行通信。 应用服务层 由Service,Receiver,ContentProvider组成 负责与系统进行通信。 负责监控系统行为并处理。 负责与调度层进行消息通信。 与调度层通过远程接口AIDL进行通信,返回计算结果/事件等。 优点与缺点 优点: (1)充分利用Android平台提供的组件达到使用需求(如监控系统事件,保持服务一直运行等),更本地化。 (2)可以应用系统性比较强的应用程序。 缺点: (1)AIDL进行交互比较繁琐。 四.Android项目的目录结构 首先启动Eclipse,展开Package Explorer导航器中的hello项目,如图3-1所示。 与一般的Java项目一样,src文件夹是项目的所有包及源文件(.java),res文件夹中则包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)等。下面来介绍其他Java项目中没有的的gen文件夹中的R.java文件和每个Android项目都必须有的AndroidManfest.xml文件。 R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改,R.java文件是定义该项目所有资源的索引文件。先来看看hello项目的R.java文件,如代码清单3-1所示。 代码清单3-1 R.java 可以看到这里定义了很多常量,仔细一看就发现这些常量的名字都与res文件夹中的文件名相同,这再次证明R.java文件中所存储的是该项目所有资源的索引。有了这个文件,在程序中使用资源将变得更加方便,可以很快地找到要使用的资源,由于这个文件不能被手动编辑,所以当我们在项目中加入了新的资源时,只需要刷新一下该项目
显示全部
相似文档