一、应用组件
应用组件是Android应用的基本构建基块。共有四种类型,每一种都服务于不同的目的,并且具有定义组件的创建和销毁方式的不同生命周期。
1.Activity
Activity 表示具有用户界面的单一屏幕。例如,电子邮件应用可能具有一个显示新电子邮件列表的 Activity、一个用于撰写电子邮件的 Activity 以及一个用于阅读 电子邮件的 Activity。 尽管这些 Activity 通过协作在电子邮件应用中形成了一种紧密结合的用户体验,但每一个 Activity 都独立于其他 Activity 而存在。 因此,其他应用可 以启动其中任何一个 Activity(如果电子邮件应用允许)。 例如,相机应用可以启动电子邮件应用内用于撰写新电子邮件的 Activity,以便用户共享图片。
2.服务
服务是一种在后台运行的组件,用于执行长时间运行的操作或为远程进程执行作业。 服务不提供用户界面。 例如,当用户位于其他应用中时,服务可能在后台播放音
乐或者通过网络获取数据,但不会阻断用户与 Activity 的交互。 诸如 Activity 等其他组件可以启动服务,让其运行或与其绑定以便与其进行交互。
3.内容提供器
内容提供程序也适用于读取和写入您的应用不共享的私有数据。 例如,记事本示例应用使用内容提供程序来保存笔记。
4.广播接收器
main()
函数)。由于系统在单独的进程中运行每个应用,且其文件权限会限制对其他应用的访问,因此您的应用无法直接启动其他应用中的
二、启动组件
启动组件需要使用Intent对象创造。Intent的用法参考上篇文章。
每种类型的组件有不同的启动方法:
您可以通过将 Intent
传递到 startActivity()
或 startActivityForResult()
(当您想让 Activity 返回结果时)来启动 Activity(或为其安排新任务)。
您可以通过将Intent
传递到 startService()
来启动服务(或对执行中的服务下达新指令)。 或者,您也可以通过将 Intent
传递到 bindService()
来绑定到该服务。
您可以通过将 Intent
传递到 sendBroadcast()
、sendOrderedBroadcast()
或 sendStickyBroadcast()
等方法来发起广播;
您可以通过在 ContentResolver
上调用 query()
来对内容提供程序执行查询。
三、清单文件
在 Android 系统启动应用组件之前,系统必须通过读取应用的 AndroidManifest.xml
文件(“清单”文件)确认组件存在。 您的应用必须在此文件中声明其所有组件,
该文件必须位于应用项目目录的根目录中。
除了声明应用的组件外,清单文件还有许多其他作用,如:
确定应用需要的任何用户权限,如互联网访问权限或对用户联系人的读取权限
根据应用使用的 API,声明应用所需的最低 API 级别
声明应用使用或需要的硬件和软件功能,如相机、蓝牙服务或多点触摸屏幕
应用需要链接的 API 库(Android 框架 API 除外),如 Google 地图库
其他功能