Android API课程1.1: Application Components

应用组件是Android应用的基本构件。每一个组件,是系统可以进入你的应用的不同的点。并不是所有的组件都会给用户的实际功能和彼此依赖,但是每一个组件有它自己的实体和扮演一个特定的角色,都是唯一的构造块,可以帮助定义应用整个展现。

一共有4种不同的应用组件。每种组件服务不同的目标和有不同生命周期(定义组件的创建和消亡)。

下面介绍下四种应用组件:

活动(Activites)

一个活动表示单个含有用户界面的屏幕。例如,一个邮件应用可能包含一个活动显示新邮件列表,再有一个活动写邮件,再有一个活动用来阅读邮件。尽管这些活动在邮件应用中一起组成完整的用户体验。每个活动都是不依赖其他活动的。同样地,不同的应用可以启动邮件应用任何一个活动,如果邮件应用允许的话。例如,相机应用可以启动邮件应用去写新邮件,然后分享图片给其他人。

一个活动可以做活动的子活动,你可以在活动开发指导中学习更多关于活动的知识。

服务(Services)

一个服务是运行在后台执行长时间运行和操作,或者为远程进程工作一种组件。一个服务不会提供用户界面。例如,当用户正在使用不同的应用,一个服务可能在后台播放音乐,或者从因特网上拿东西,而不用妨碍用户和正在使用的应用的交互。其他的组件,例如一个活动,可以启动服务并让它运行,或者绑定它及和它交互。

内容提供者(Content providers)

内容提供者管理共享数据集。你可以存储数据在文件系统,SQLite数据库,网上,或者你的应用可以访问的其他存储。

通过内容提供者,其他的应用可以查询,甚至修改数据(如果内容提供者允许)。例如,Android系统使用内容提供者管理用户的联系信息。同样地,任一有适当权限的应用,可以查询或者修改内容提供者的关于某个人的部分内容。

内容提供者在读写应用私有的数据时也是有用的。例如,记事本(Note Pad)实例程序使用内容提供者保存记事。

一个内容提供者作为ContentProvider的子类实现的,并且必须要实现标准API集,以实现应用执行交换。你可以在内容提供者开发指导中了解更多的信息。

广播接收器(Broadcast receivers)

广播接收器是回应系统广播通知的组件。许多广播起源于系统,例如,广播通知屏幕已经关闭因为电池量很低了,或者一个图片被捕捉了。应用也可以发起广播。例如,让其他应用知道一些数据已经下载到本地并可以使用了。尽管广播接收器不会显示用户界面,他们可能会创建一个状态栏提示去通知用户一个广播事件发生了。更常见的是,广播接收器只是其他组件的中转,和只做很小量的工作。举个例子,它可能发起一个服务做基于某事件的工作。

广播接收器是作为BroadcastReceiver的子类实现。每个广播是作为Intent对象发送的。参考BroadcastReceiver类去获得更多的信息。

一项Android独一无二的系统设计是任何应用可以启动其他应用的组件。例如,如果你想让用户使用设备的相机拍张照,可能已经被其他的应用实现了,那么你的应用就可以直接使用它,而不用你自己再开发一个新的拍照活动。你不需要合并,甚至连接相机应用的代码。而是简单的启动相机拍照的活动。当完成后,相片会返回给你的应用,以便你可以使用它。对于用户来说,相机看起来就是你应用的一部分。

当系统启动一个组件,它启动组件进程并实例化组件需要的类。例如,如果你的应用启动相机的拍照活动并不是属于你的应用,那么这个活动在相机应用,而不是你的应用,的进程中执行。因此,不像其他系统的应用,Android应用不会有单个实体点,例如不会有main()方法。

因为系统通过文件权限,在不同的进程中运行应用,这限制了其他应用的访问。你的应用不能直接激活其他应用的组件。但是Android系统可以。所以,为了激活另外一个应用的组件,你必须发信息给系统,明确你的目的去启动特定的组件。系统然后为你激活该组件。

相关推荐