Broadcast Receiver(广播接收者)是Android中的一种监听器,用于接收系统或应用发出的广播消息。应用可以通过广播实现跨进程通信。Broadcast Receiver运行在主线程

发送Broadcast


创建Intent,然后通过发送Broadcast的方法将Intent传递出去,所有符合Intent的组件都将被唤醒。发送Broadcast有两种方式

  • sendBroadcast() 发送普通异步广播
  • sendOrderedBroadcast() 发送有序广播,即为发出的广播事件定义优先级,优先级高的广播可以修改甚至结束优先级低的广播

注册Broadcast Receiver


使用Broadcast Receiver需要继承BroadcastReceiver类并重写onReceiver()方法。Broadcast Receiver有两种注册方式

  • 动态注册 在代码中实例化一个Broadcast Receiver对象
    • 使用动态方式注册广播接收器,官方建议是在onResume()回调函数中调用registerReceiver()注册,在onPause()回调函数中调用unregisterReceiver()函数注销;如果在onStart()回调函数中注册的话,就要在onStop()回调函数中解除注册
    • 动态注册的广播一定要解除注册,否则当注册的上下文对象被销毁时,会出现异常
  • 静态注册 在Manifest中注册Broadcast Receiver对象
    • 使用静态方式注册的广播接收器在应用被关闭时仍然可以被对应的广播事件唤醒,进而处理相应的事件

动态注册的Broadcast Receiver隐藏在代码中,不方便管理;所以推荐使用静态注册的方式
Receiver可以接收多个Intent并处理,onReceiver()每次接收Intent都会生成一个新的Receiver对象,函数结束后就销毁该对象

生命周期


Broadcast Receiver的生命周期从调用onReceiver()方法开始,到结束为止。因为生命周期比较短暂,所以不适合处理复杂逻辑(包括弹出对话框等待用户点击)。如果需要复杂事件处理,可以将Intent对象通过startService()传递给Service,并开辟子线程操作

参考资料


Android开发之BroadcastReceiver详解
Android 中的BroadCastReceiverAndroid Broadcast Security


更多相关文章

  1. android安全:flag FLAG_RECEIVER_REGISTERED_ONLY的意义
  2. Android(安卓)常见Action
  3. 【Android系统视窗模块】Android(安卓)8与Android(安卓)9分屏模
  4. android APK 调用G—sensor驱动的过程
  5. Android(安卓)Donut Makefile分析
  6. Rexsee API介绍:Android视频播放,Rexsee的VideoPlayer函数说明与源
  7. Android四大组件基本介绍及其生命周期
  8. android suspend and resume
  9. Android跨进程通信IPC之6——Parcel--Binder对象的写入和读出

随机推荐

  1. [Android]把busybox上所有命令映射出来;
  2. AndroidContentProvider ContentResolver
  3. 2013.03.19(4)———activity ListView点击
  4. andriod 中下载图片到sdcard中例子
  5. Android(安卓)中文API (67) ―― Bluetooth
  6. 通过手势实现Android(安卓)ImageView 缩
  7. android studio 2.0 错误记录
  8. 音乐播放器源码
  9. android EOFException异常解决办法 (Share
  10. 快速的Android漏洞的审计工具