广播Broadcast Receiver
广播的类型:
1、标准广播(Normal broadcat)
完全异步执行的广播,所有广播接收器同一时间接收广播消息。
效率高,但无法被截断。
2、有序广播
同步执行的广播,同一时刻只能有一个广播接收器接收广播消息,当执行完毕后才会继续传递。
优先级高的先收到广播,并且可以截断广播。
接收系统广播:
注册:动态注册(代码)和静态注册(AndroidaManifest.xml)
动态广播:
1、继承Broadcastreceiver
2、重写onReceive()方法
3、注册registerReceiver()
4、动态注册的广播接收器一定要取消注册,unregisterReceiver()
5、声明权限在AndroidManifest.xml中
静态广播接收器在AndroidManifest.xml中通过<receiver>标签进行注册,
<receiver android:name=".BootCompleteReceiver ">
<intetn-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"> //开机广播
</intent-filter>
</recevier>
广播接收器中不允许开启线程,不要添加过多逻辑或进行任何耗时操作。
自定义广播:
1、标准广播:
(1)定义一个广播接收器
(2)在事件里加入自定义广播的逻辑
(3)构建Intent对象,传入要发送的广播的值
(4)调用sendBroadcast()方法,发送广播
(5)在AndroidManifest.xml中<receiver>注册
2、有序广播:
基本与标准广播一样,发送调用sendOrderedBroadcast()方法。
在AndroidManifest.xml中设置优先级<intent-filter android:priority="100">
截断广播调用abortBroadcast()方法
本地广播:(解决安全性问题)
使用LocalBroadcastManager对广播进行管理。
(1)通过LocalBroadcastManager.getInstance(this)获取他的实例
(2)构建LocalReceiver类
(3)通过LocalBroadcastManager的registerReceiver()方法进行动态注册。方法中包含2个参数localReceiver和intentfilter
(4)调用LocalBroadcastManager的sendBroadcast()方法进行发送广播
(5)在onDestroy()方法中取消注册
本地广播无法使用静态注册的方式来接收。
最新文章
- .NET中操作IPicture、IPictureDisp的小随笔
- 3.Git的诞生和其分布式的优点
- 解决在CentOS6.5下安装OpenStack(Icehouse版本 )出现的glance服务无法正常工作的问题
- Start cluster zookeeper in shell script
- Codeforces 161D Distance in Tree(树的点分治)
- 264分析两大利器:264VISA和Elecard StreamEye Tools
- [Everyday Mathematics]20150106
- POJ3122Pie(二分)
- 实现SELECT的全选,反选,AB选的JAVASCRIPT代码
- jstring 和char 之间的转换方法
- MAC 系统升级10.10以后PHP验证码错误的解决办法。[ 一行代码轻松解决! ]
- Objective-C日记-之KVC
- 面试(1)-java-se-字符串
- javascript之BOM编程Screen(屏幕)对象
- 数据流中的第k大元素的golang实现
- 如何在linux环境安装数据库
- Qt打包发布exe
- Fiddler安装证书
- pyqt5-定时器
- react-native 新手爬坑经历(Could not connect to development server.)