1.BroadcastReceiver简介
BroadcastReceiver本质上是一种全局的监听器,用于监听系统全局的广播消息。每次系统Broadcast事件发生后,系统就会创建对应的BroadcastReceiver的实例,并自动触发它的onReceive()方法,onReceive()方法执行完后,BroadcastReceiver的实例就会被销毁。
如果BroadcastReceiver的onReceive()方法不能在10秒内执行完成,Android会认为该程序无响应。所以不要在BroadcastReceiver的onReceive()方法里执行一些耗时的操作,否则会弹出ANR(Application No Response)的对话框。
2.有序广播(Ordered Broadcast)和普通广播(Normal Broadcast)
有序广播是完全异步的,可以再同一时间被所有接受者接收到,消息传递的效率比较高。使用sendBroadcast()发送普通广播。
有序广播的接受者将按预先声明的优先级依次接收Broadcast。并且,Ordered Broadcast的接受者可以将数据传递给下一个接收者。使用sendOrderedBroadcast()发送有序广播。优先级声明是在<intent-filter.../>元素的android:priority属性中设置。
abortBroadcast():终止Broadcast。如果Broadcast被前面的接受者终止,后面的接受者就再也无法获取到Broadcast。
setResultExtras(Bundle):往Broadcast中传入数据,然后传给下一个接收者。
getResultExtras(true):接收上一个接收者存入的数据。