广播
1.广播机制简介
1.1标准广播
是一种完全异步执行的广播,所有的广播接收器在同一时刻接受到,效率高,无法被截断
发出一条广播–广播接收器1,2,3
1.2有序广播
是一种同步执行的广播,优先级高的广播接收器就可以先收到广播,并且可以截断正在传递的广播。
发出一条广播–广播接收器1–广播接收器2–广播接收器3
2.对广播进行注册
方式有两张,在代码中注册和在AndroidManifest.xml中注册,
前者称为动态注册,后者称为静态注册。
2.1动态注册
创建广播接受器:新建一个类继承BroadcastReceiver
并重写onReceive()方法。
在onCreate()中创建一个IntentFilter实例,添加我们要监听的广播的action值,
然后创建广播接收器类的实例,
然后调用registerReceiver(),传入IntentFilter对象和接收器对象,进行注册。
最好在onDestroy()中使用unregisterReceive()方法取消注册
2.2静态注册
在AndroidManifest.xml文件中添加<uses-permisson/>监听的系统权限。
<application>中添加<receive>将接收器注册,并用<Intent-filter>加入想要接收的广播类型。
3.发送自定义广播
3.1标准广播
新建Intent对象,传入要接收的广播,调用sendBroadcast()方法,传入Intent对象。
3.2有序广播
在AndroidManifest.xml文件<receive>中添加android:priority属性,设置优先级
调用sendOrderedBroadcast()方法,传入Intent对象和一个权限字符串(可为null)。
在onReceive()中调用abortBroadcast()方法可将广播截断。
4.本地广播
只能在应用程序内用进行传递的广播
发送:
通过LocalBroadcastManager.getInstance获取LocalBroadcastMananer实例
调用实例的sendBroadcast(Intent intent)方法发送本地广播
接收:
将要接受的广播类型传入IntentFilter对象,调用实例的registerReceiver()方法进行动态注册
在onDestroy()中调用实例的unregisterReceiver()方法取消注册。
优点
最后我们再来盘点一下使用本地广播的几点优势吧。
1. 可以明确地知道正在发送的广播不会离开我们的程序,因此不需要担心机密数据泄漏的问题。
2. 其他的程序无法将广播发送到我们程序的内部,因此不需要担心会有安全漏洞的隐患。
3. 发送本地广播比起发送系统全局广播将会更加高效。