Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1492249
  • 博文数量: 465
  • 博客积分: 8915
  • 博客等级: 中将
  • 技术积分: 6365
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-30 15:05
文章分类

全部博文(465)

文章存档

2017年(33)

2016年(2)

2015年(4)

2014年(29)

2013年(71)

2012年(148)

2011年(178)

分类: IT业界

2012-02-22 15:35:43

程序的组件模式

Android程序的载体是各个应用程序包(APK),而程序运行的主体是各种“组件”。Android的一个应用程序包一般可以视为运行在一个进程中的组件的集合。

因此,Android应用程序运行的主要单位是组件。Android中的application并不是一个程序运行的实体,仅表明相关组件之间运行的上下文。

Android四种组件是:活动(android.app包中的Activity类),服务(android.app包中的Service类),广播接收器(android.content包中的BroadcastReceiver类)和内容提供者(android.content包中的ContentProvider类)。四种组件都是基础的类,在程序中一般需要经过扩展使用。

Activity是一个可见的、类似在前台运行的部件,它具有一定的生命周期,例如有在前面、在后面但可见、在后面不可见、消失等几种状态。Activity的作用相当于一个“窗口”,它作为各种控件的容器,展示给用户并进行交互。

Service是一个不可见、但是可以长期运行的部件,其他部件可以使用启动或者绑定的方式和服务进行交互。服务在后台长期存在保存上下文,并具有接口与其他部件进行交互。

BroadcastReceiver是一个不可见、只有短期运行的部件。广播的作用相当于一个回调函数Callback)”,只有在被调用的时候才运行。

ContentProvider表示的是内容的接口,它实际上是一个静态的部件,提供统一的数据访问和存取方式,在其下部可以使用数据存储系统来实现。

Android应用程序的角度,各个组件对外的联系是程序处理的一个关键性问题,组件接口包括对用户的接口和对其他包的接口两部分内容。

在对用户的接口的角度,包括呈现给用户的界面和接受用户的控制,主要由Activity及其中的View对外提供,其他组件可以使用通知(Toast通知和状态栏通知)的方式和用户简单交互。

应用程序包之间的接口方面,主要由组件的标准接口提供,ActivityServiceBroadcastReceiver使用Intent作为对外的接口ContentProvider使用URI作为对外的接口。从组件的角度,其接口分为对包内的其他组件的接口和对其他应用程序包的接口,它们的实现结构基本相同。

 提示:Activity具有返回结果的启动方式只能被其他Activity所使用,其他组件对外的接口有Context就可以使用。

Androidy应用程序包的组件接口关系如图7-1所示。

 

 

Android应用程序实现的角度,组件是Android的应用程序架构中强制需要的使用机制。基于组件可以更清晰地划分程序的结构,程序中也将具有和组件无关代码部分,例如:与UI相关控件、2D-3D图形绘制、动画等方面,与UI无关的逻辑、算法、数据存储、硬件控制等方面。这些代码需要提供功能给组件,并通过组件进行组织,进而构成一个完整的应用程序。

 

 

——本段文字节选自《Android经典应用程序开发》

图书详细信息:http://blog.chinaunix.net/uid-13164110-id-3077640.html

阅读(1547) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~