应用程序组件

应用程序组件是一个Android应用程序的基本构建块。每个组件都是一个系统可以进入你的应用的不同的入口。并不是所有的组件都是实际为用户入口点,但每一个存在的应用程序组件都扮演一个特定角色——每一个应用程序组件都是一个独特的构建块,可以帮助定义应用程序的整体行为。
总共有有四种不同类型的应用程序组件。每种类型都有不同的用途,并且有一个独特的生命周期,它定义了组件是如何创建和销毁的。
这里是四种类型的安卓应用组件:

Activities

一个activity表示带有用户界面的单个屏幕。例如,一个电子邮件应用程序可能有一个activity用来显示一个新邮件列表,一个写电子邮件的activity,以及另一个阅读电子邮件的activity。虽然这些activity是在电子邮件应用程序中为了形成一个有凝聚力的用户体验而协同工作,但每个都是独立于其他的。因此,一个不同的应用程序可以启动这些activity中的任何一个(如果电子邮件应用允许的话)。例如,一个相机应用程序可以在电子邮件应用程序中创建新的邮件,以便用户共享图片。
一个activity是作为Activity的子类实现的,你可以在activity开发人员指南中了解更多。

Services

service是在后台运行长期运行的操作或为远程进程执行工作的组件。service不提供用户界面。例如,服务可以在后台播放音乐,而用户在另一个应用程序中,音乐应用程序可以通过网络获取数据,而不阻塞用户与activity的交互。另一个组件,例如activity,可以启动服务,并让它运行或绑定到它,以便与它交互。
service是作为Services的子类实现的,您可以在service开发人员指南中了解更多。

Content providers

content provider管理一组共享的应用程序数据。您可以将数据存储在文件系统、SQLite数据库、web上,或者应用程序可以访问的任何其他持久存储位置。通过content provider,其他应用程序可以查询甚至修改数据(如果content provider允许的话)。例如,Android系统提供了一个content provider来管理用户的联系信息。因此,任何具有适当权限的应用程序都可以查询content provider的一部分(比如ContactsContract.Data)来读取和写入关于某一特定人员的信息。
content provider对于读取和写入私有的而不是共享的数据是很有用的。例如,Note Pad样例应用程序使用content provider来保存注释。
content provider是作为ContentProvider的子类实现的和必须实现一套标准的api,使其他应用程序能够执行事务。有关更多信息,请参见 Content Providers开发人员指南。

Broadcast receivers

broadcast receiver 是响应全系统广播公告的组件。许多广播来自系统——例如,广播宣布屏幕关闭,电池电量不足,或者图片被捕捉。应用程序也可以发起广播,例如,让其他应用程序知道一些数据已经被下载到设备上,并可供他们使用。虽然broadcast receiver 没有显示用户界面,但是当广播事件发生时,他们可能会创建一个状态栏通知来提醒用户。不过,更常见的是,broadcast receiver 只是其他组件的“网关”,它的目的是做非常少的工作量。例如,它可能启动一个服务来根据事件执行一些工作。
broadcast receiver 是作为一个BroadcastReceiver的子类实现的,每一个广播都是作为一个intent对象。有关更多信息,请参见BroadcastReceiver类。
Android系统设计的一个独特之处在于,任何应用程序都可以启动另一个应用程序的组件。例如,如果你想让用户用摄像头设备捕捉到一张照片,你可以调用一个可以实现这个功能的应用来实现它,而不是自己开发一个activity来捕捉照片。你不需要在相机应用程序中加入甚至链接到代码,相反,你只需在相机应用程序中启动捕捉照片的活动即可。当完成时,照片甚至会返回到你的应用程序,这样你就可以使用它了。对用户来说,摄像头似乎是你应用程序的一部分。
当系统启动一个组件时,它启动该应用程序的进程(如果它还没有运行),并实例化组件所需的类。例如,如果你的应用程序启动了相机应用程序的活动,它捕捉到一张照片,该活动在属于相机应用程序的过程中运行,而不是在你的应用程序中。因此,与大多数其他系统上的应用程序不同,Android应用程序没有一个入口点(例如,没有main()函数)。
因为系统在一个单独的进程中运行每个应用程序,文件权限限制了对其他应用程序的访问,你的应用程序不能直接从另一个应用程序激活一个组件,然而,Android系统可以。因此,要激活另一个应用程序中的组件,您必须向系统传递一个消息,该系统指定您启动特定组件的意图。然后系统为你激活组件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值