应用程序组件是是Android应用程序的重要基石。不同的组件存在不同的指向,系统也由不同的指向进入程序。
应用程序组件有4种不同的类型。每一个都有不同的定义。
1.Activities:一个Activity(活动)表示一个二用户界面,可以与用户进行交互。比如,一个电话簿应用程序可以包括一个显示所有联系人的Activity、一个添加新的联系人的Activity、一个编辑联系人的Activity,以及一个显示详细信息的Activity。这些Activity共同给用户提供体验,但每个都相互独立。所以,如果给予一些应用程序权限,它们可以访问这些活动中的其中一个。比如QQ在开始使用时会询问是否给予联系人权限,同意后其会显示通讯录好友;
要实现一个Activity,需要定义一个Activity类的子类。如果新建一个活动,必须在AndroidManifest.xml中进行表明;
2.Services:Service(服务)指在后台运行的组件,一般用于执行需要长时间的操作或者远程操作。Service不提供用户界面。比如,Service在后台播放音乐的同时,用户在使用另一个不同的应用程序,或者Service可能正在获取网络上的数据,但并不阻塞用户使用交互活动。作为一个组件,某个Activity可以启动该服务,使之运行或绑定以便于交互;
要实现一个Service,需要定义一个Service类的子类;
3.Content Provider:Content Provider(内容提供者)管理应用程序共享的数据集。程序猿可以将数据存储在文件系统、SQLite数据库、网络或任何其他应用程序可以访问的持久性存储位置。通过Content Procider,其他应用程序可以查询甚至修改Content Provider上的数据(Content Provider允许的情况下)。比如,Android系统提供了一个Content Provider管理用户的联系人信息,于是任何具有权限的应用程序可以查询Content Provider(如ContactsContract.Data)的某部分,读取和写入关于特定人的信息;
要实现一个Content Provider,需要定义一个Content Provider的子类,并实现一套标准的API,以便使其能够与其他的应用程序进行交易;
4.Broadcast Receivers:Broadcast Receivers(广播接收器)是一个负责全系统广播通知的组件。许多广播信息都来源于系统,如某个Broadcast宣布屏幕已关闭、电池电量低或者图片已被捕捉到。应用程序也可以启动广播,例如,让其他应用程序知道某些数据已经被下载到设备。虽然广播接收器不显示界面,但可以创建状态通知栏用于广播事件发生时提醒用户。更普遍的做法是,将广播接收器设计为对该组件的“网关”,且只需要做非常少量的工作,例如,只启动一个服务来执行基于事件的一些工作。
要实现一个Broadcast Receiver,需要定义一个Broadcast Receiver类的子类。每一个Broadcast对象均以Intent对象的形式进行调用。
Android系统设计的一个独特之处在于应用程序可以通过Intent来启动另一个应用程序的组件。