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定义,这些是系统广播。

results matching ""

    No results matching ""