Android知识

BroadcastReceiver学习笔记

2016-12-18  本文已影响42人  fengmlo

BroadcastReceiver本质是一种全局监听器,它可以监听全局的广播消息。

与Activity和Service不同的是,BroadcastReceiver在接收到匹配的Intent前并不会被激活。激活一个BroadcastReceiver需要以下步骤:

  1. 创建一个匹配的Intent
  2. 调用Context的sendBroadcast() 或 sendOrderedBroadcast()

当Context发出通知后,所有匹配该Intent的BroadcastReceiver都可能被启动。

要实现一个BroadcastReceiver,只需重写它的onReceive方法,同时注册到程序中。
有两种方式注册BroadcastReceiver:

  1. 在AndroidManifest.xml中注册:
<receiver android:name="...">
    <intent-filter>
        <action android:name="...." />
    </intent-filter>
</receiver>
  1. 在程序中注册
IntentFilter filter = new IntentFilter("...");
Receiver receiver = new Receiver();
registerReceiver(receiver, filter);

当对应的广播发出后,系统就会创建对应的BroadcastReceiver实例,并调用它的onReceive方法,该方法执行完后,实例就会被销毁。如果onReceive不能在10秒内执行完成,会触发ANR。若要执行耗时操作,可以启动一个Service,不应启动新线程,很可能线程没执行完,BroadcastReceiver就已经退出了。

广播

广播有两种:

同样优先级有两种设置方式:

  1. AndroidManifest.xml:
<receiver android:name="...">
    <intent-filter android:priority="0">
  1. 代码中:
intentFilter.setPriority(1000);
上一篇 下一篇

猜你喜欢

热点阅读