标签:接收器 发送 广播 Intent 注册 Android BroadcastReceiver
重温四大组件之 BroadcastReceiver。
目录
一、理解广播与广播接收器
1. 广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理)
2.一个应用可以在发生特定事件时发送Broadcast,系统中任何应用只要注册了对应Receiver就会接收到此Broadcast
3.一个应用如果对某个广播感兴趣,就可以注册对应的Receiver来接收广播
4.广播事件机制是应用程序(进程间)之间通信的一种手段
二、相关API
Context.
- sendBroadcast(Intent intent):发送一般广播
- sendOrderedBroadcast(lntent intent):发送有序广播
- registerReceiver(receiver,intentFilter):注册广播接收器
- unRegisterReceiver(receiver):解注册广播接收器
BroadcastReceiver
- onReceive(Context context,Intent intent):接收到广播的回调
- abortBroadcast():中断广播的继续传播
- boolean isOrderedBroadcast():判断是否是有序广播
三、常见的广播
收到短信广播:android.provider.Telephony.SMS_RECEIVED
开机完成广播:Intent.ACTION_BOOT_COMPLETED
应用被卸载广播:Intent.ACTION_PACKAGE_REMOVED
手机锁屏:Intent.ACTION_SCREEN_OFF
手机开屏:Intent.ACTION_SCREEN_ON
四、发送两种类型的广播
- 发送一般广播 :Context.sendBroadcast
- 发送有序广播 : Context.sendOrderedBroadcast
区别: 前者无序(如果没设置优先级的情况下), 不可中断广播
或者有序,根据优先级和注册顺序先后一次执行,可以中断广播, 中断后,后面的接收器无法再收到该广播。
注: 有序是可以通过设置 intentfilter 的priority 属性, 1-1000, 值越大,优先级越高
五、静态注册和动态注册广播接收器
静态注册 | 动态注册 | |
注册方式 | 配置文件 | 代码 |
注册时间及对象创建时间 | 应用安装成功/手机开机完成 注册时不会创建对象,接收到广播才创建对象 | 执行registerReceiver(BroadcastReceiver , IntentFilter) 注册就创建对象 |
生命结束的时间(解注册) 及对象回收时机 | 应用卸载 对象在执行onReceive() 后就被回收了 | 执行 unregisterReceiver(BroadcastReceiver) (Activity退出时必须解注册) 解注册后对象被回收 |
应用场景 | 需要监听的时间为应用的整个生命过程中 | 只服务于某个Activity 或者Service |
标签:接收器,发送,广播,Intent,注册,Android,BroadcastReceiver 来源: https://blog.csdn.net/whjk20/article/details/113182525
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。