#以下为BroadcastReceiver使用笔记,如有不明白请留言。
注册静态广播
1)建立MyReceiver继承至BroadcastReceiver,并实现onReceived方法
@Override
public void onReceive(Context context , Intent intent) {
Toast. makeText(context , "Boot Completed" ,Toast. LENGTH_LONG).show() ;
}
public void onReceive(Context context , Intent intent) {
Toast. makeText(context , "Boot Completed" ,Toast. LENGTH_LONG).show() ;
}
2)AndroidManifest中添加注册信息
<receiver
android
:name=
".MyReceiver"
>
<intent-filter>
<action android :name= "android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<intent-filter>
<action android :name= "android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
3)发送无序广播
Intent i =
new Intent(
"android.intent.action.BOOT_COMPLETED")
;
sendBroadcast(i) ;
sendBroadcast(i) ;
#通过广播更新UI的方法:Activity写Receiver内部类,注册静态广播,并在onReceived方法中调用Handler更新信息
动态注册广播:
1)在Activity中建立Receiver的对象,添加过滤器
myReceiver =
new MyReceiver()
;
IntentFilter intentFilter = new IntentFilter() ;
intentFilter.addAction(MyReceiver. MYRECEIVER) ;
registerReceiver( myReceiver ,intentFilter) ;
IntentFilter intentFilter = new IntentFilter() ;
intentFilter.addAction(MyReceiver. MYRECEIVER) ;
registerReceiver( myReceiver ,intentFilter) ;
2)在onDestroy()中取消注册
unregisterReceiver(
myReceiver)
;
3)发送无序广播
Intent i =
new Intent(MyReceiver.
MYRECEIVER)
;
sendBroadcast(i) ;
sendBroadcast(i) ;
#动态注册不需要在AndroidManifest文件中添加相应的IntentFilter,否则sendBroadcast()时Receiver会接收到两条相同的信息
#有序广播为sendOrderedBroadcast();
#优先级:无序广播和有序广播都可以被优先级控制
<intent-filter
android
:priority=
"10"
>
#拦截广播:无序广播不可被拦截,否则会出异常
abortBroadcast()
;
发送本地广播(本地广播只能在应用中被接收,安全)
1)获取LocalBroadcastManager实例
localBroadcastManager = LocalBroadcastManager.
getInstance(
this)
;
2)动态注册广播
myReceiver =
new MyReceiver()
;
IntentFilter intentFilter = new IntentFilter() ;
intentFilter.addAction(MyReceiver. MYRECEIVER) ;
localBroadcastManager.registerReceiver( myReceiver ,intentFilter) ;
IntentFilter intentFilter = new IntentFilter() ;
intentFilter.addAction(MyReceiver. MYRECEIVER) ;
localBroadcastManager.registerReceiver( myReceiver ,intentFilter) ;
3)发送广播
Intent i =
new Intent(MyReceiver.
MYRECEIVER)
;
localBroadcastManager.sendBroadcast(i) ;
localBroadcastManager.sendBroadcast(i) ;
4)onDestroy()取消注册
localBroadcastManager.unregisterReceiver(
myReceiver)
;