0x00 前言
继续写“第一行代码”的读书笔记,这次看看Android的广播机制
0x01 广播机制
广播机制分为两类:
标准广播:异步的,广播发送之后,所有的广播接收器几乎同时接受广播,广播效率比较高。但不能截断。
有序广播:同步执行的,优先级高的先接受到,之前的广播接收器可以截断广播。
0x02 动态注册广播接收器和静态注册广播接收器
先来看如何写动态注册,关键函数是:registerReceiver(networkChangReceiver,intentFilter)
public class MainActivity extends AppCompatActivity { |
静态注册的编写方法就简单多了,直接定义一个接收类,
public class MyReceiver extends BroadcastReceiver { |
在AndroidManifest.xml中注册,添加Intentfileter;并且开启权限:RECEIVE_BOOT_COMPLETED
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> |
0x03 发送广播
- 发送标准广播
基本步骤为:新建一个广播接收器,在然后AndroidManifest.xml中注册,添加Intentfileter,发送自定义广播,也就是Intent。
这里的广播接收器我用上面的就OK了,只需要添加一个Intentfileter就完成。
//发送标准广播到我们定义的广播接收器 |
- 发送有序广播
发送广播方式改为:sendOrderedBroadcast(intent, null);
|
广播截断:abortBroadcast();
public class MyReceiver extends BroadcastReceiver { |
- 本地广播
前面解释的都是全局广播,其他应用程序可以接收,本地广播只能够在应用程序的内部进行传递,有效更加安全性。
@Override |
静态注册本地广播接收器:localBroadcastManager.registerReceiver(localReceiver,intentFilter);
intentFilter = new IntentFilter(); |