广播类型
|
----- 标准广播。所有的广播接收者同一时刻接收到广播消息,效率高,不能截断。
|
----- 有序广播。顺序接收,依次传递,可被截断。
注册广播
|
----- 静态注册。 即在AndroidManifest.xml中注册,
|
----- 动态注册。 即在运行代码流程中注册。
动态:
1.创建一个广播接收者MyBroadcastReceiver类继承BrocastReceiver类, 重写onReceive方法
2.
private MyBroadcastReceiver myReceiver;
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.AAA.BBB");
myReceiver = new MyBroadcastReceiver();
registerReceiver(myReceiver, intentFilter);
onDestroy()
unregisterReceiver(myReceiver);
静态:
AndroidManifest.xml
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<intent-filter>
广播的发送:
发送标准广播:
Intent intent = new Intent("com.example.broadcast.MY_BROADCAST");
sendBroadcast(intent);
发送有序广播:
AndroidManifest.xml
<intent-filter android:priority="100">
<action anroid:name="com.example.broadcast.MY_BROADCAST" />
</intent-filter>
广播接收者指定了优先级,优先级高的先收到广播。
-------------------
截断传播
abortBrocast();
----------------------- 上述广播是系统广播,可以被其他应用获取---------------------
本地广播,只在本应用里面发出
private LocalBroadcastManager localBrocastManager;
localBrocastManager = LocalBrocastManager.getInstance(this);
Intent intent = new Intent("aaa.bbb.LOCAL_BROADCAST");
localBrocastManager.sentBrocast(intent);
注册广播接收者:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("aaa.bbb.LOCAL_BROADCAST");
LocalReceiver localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(lcoalReceiver, intenFilter);
---- end -------- 还是很好理解的