background image

3 Broadcast

  在

Android 中,Broadcast 是一种广泛运用的在应用程序之间传输信

息的机制。而

BroadcastReceiver 是对发送出来的 Broadcast 进行过滤接

受并响应的一类组件。可以使用

BroadcastReceiver 来让应用对一个外部

的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的
时候,可以利用

BroadcastReceiver 进行处理。例如,当下载一个程序成

功完成的时候,仍然可以利用

BroadcastReceiver 进行处理。

BroadcastReceiver 不能生成 UI,也就是说对于用户来说不是透明的,用
户是看不到的。

BroadcastReceiver 通过 NotificationManager 来通知用

户这些事情发生了。

BroadcastReceiver 既可以在 AndroidManifest.xml 

中注册,也可以在运行时的代码中使用

Context.registerReceiver()进行

注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要
的时候启动程序。各种应用还可以通过使用

Context.sendBroadcast () 将

它们自己的

intent broadcasts 广播给其他应用程序。注册

BroadcastReceiver 有两种方式: 

4 Intent

  

Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使

用,由

Intent 来协助完成 android 各个组件之间的通讯。Intent 负责对应

用中一次操作的动作、动作涉及数据、附加数据进行描述,

Android 则根据此

Intent 的描述,负责找到对应的组件,将 Intent 传递给调用的组件,并完
成组件的调用。因此,

Intent 在这里起着一个媒体中介的作用,专门提供组

件互相调用的相关信息,实现调用者与被调用者之间的解耦。例如,在一个联
系人维护的应用中,当我们在一个联系人列表屏幕(假设对应的

Activity 为

listActivity)上,点击某个联系人后,希望能够跳出此联系人的详细信息屏
幕(假设对应的

Activity 为 detailActivity)。为了实现这个目的,

listActivity 需要构造一个 Intent,这个 Intent 用于告诉系统,我们要

"查看"动作,此动作对应的查看对象是"某联系人",然后调用

startActivity(Intent intent),将构造的 Intent 传入,系统会根据此
Intent 中的描述,到 ManiFest 中找到满足此 Intent 要求的 Activity,系
统会调用找到的

Activity,即为 detailActivity,最终传入

Intent,detailActivity 则会根据此 Intent 中的描述,执行相应的操作。
Intent 主要是用来启动其他的 activity 或者 service,所以可以将 intent 
理解成

activity 之间的粘合剂。Intent 具体有一下 3 

 

种形式:

  通过

startActivity 方法来启动一个新的 Activity  

  通过

broadcast Intent 机制可以将一个 Intent 发送给任何对这个

Intent 感兴趣的 BroadcastReceiver  

 

 

startService

 

Intent

 

bindService(Intent,ServiceConnection,int  

) 来和后台的

Service 

进行交互。