Boradcast Receiver
Boradcast Receiver 接收由sendBroadcast()发生的intent。
如果不想跨应用发送消息,可以使用LocalBroadcastManager。
注册Receiver有两种方式
- Context.registerReceiver() 这咱方式可动态注册,比如在opResume()中注册,在onPause()中取消注册。
- AndroidManifest.xml中使用
标签
广播介绍
有两种类型的广播,
普通广播 ,使用Context#sendBroadcast发送,这种广播是完全异步的,所有的接受都的执行顺序不确定,这种方式比较高效。但是不能返回结果,并且不能中止广播。
有序广播,使用Context#sendOrderedBroadcast发送,每次只投递给一个Receiver,只一个Receiver执行完成后会将一个结果传递给下一步Receiver,也可在中止传递。Receiver运行的顺序可由android:priority 控制,但有相当优先级的Receiver执行顺序不可保证。
当Receiver执行时间比较长时,会报ANR,此时应该使用Service。
BroadcastReceiver中的主要方法
- abortBroadcast
- setResultExtras & getResultExtras
- onReceive
系统内置Receiver
- RestrictionsReceiver
- DeviceAdminReceiver
- AppWidgetProvider
- MediaButtonReceiver
- WakefulBroadcastReceiver
系统广播
Intent中很多ACTION定义,这些是系统广播。