6.1 Android系统的信使:Intent
Android开发权威指南(第二版)
Android系统从诞生之初就不允许直接访问4大应用程序组件1(Activity、Service、Broadcast Receiver和Content Provider),这就需要提供一种机制可以访问这些组件,这也是Intent诞生的根本原因。
Intent对象被应用于4大应用程序组件中的3个(Activity、Service和Broadcast Receiver),而Content Provider会采用其他方式访问(在后面的章节会详细介绍)。例如,对于窗口(Activity)来说,尽管无法直接访问窗口实例,但可以调用startActivity方法显示窗口。为了可以更灵活地控制窗口,以及向窗口传递数据,就需要一种技术来完成这些工作,这就是Intent对象的核心功能,所以说Intent对象从本质上来说就相当于一个信使,用于保存和传输各种数据。
服务(Service)和广播(Broadcast)的使用方法和窗口(Activity)类似,Intent对象也用来完成类似的工作。
下面的代码用于开始服务和发送广播,其中都使用到了Intent对象。关于服务和广播的细节会在后面的章节讨论。
// MyService是服务类
Intent serviceIntent = new Intent(this, MyService.class);
// 开始服务
startService(serviceIntent)**;**
// mybroadcast是广播字符串
Intent broadcastIntent = new Intent("mybroadcast");
// 向系统发送一条广播
sendBroadcast(broadcastIntent)**;**
从上面的代码可以看出,开始服务、发送广播和显示窗口的代码风格是相同的,都需要创建一个Intent对象,并指定相关的信息(服务指定具体的服务类;广播指定一个字符串,被称为Broadcast Action)。
1如果读者继续阅读本书后面的章节,会逐渐体会到为什么安迪-鲁宾(Andy Rubin,Android之父)要这么设计。
时间: 2024-09-09 00:40:34