Android9.0 BroadcastReceiver案例分析附源码
Android BroadcastReceiver用于异步进程间通信,类似于发布-订阅的设计模式,不像Activity那样有界面,它是一个Android组件,用于向系统或者应用程序广播消息,这种广播消息指的是事件或者intent(意图)。具体例子像系统的电源容量低通知,下载通知等。
常用的系统intent有:
android.intent.action.BATTERY_CHANGED
android.intent.action.BATTERY_LOW
android.intent.action.POWER_CONNECTED
android.intent.action.POWER_DISCONNECTED
android.intent.action.BOOT_COMPLETED
android.intent.action.CALL
android.intent.action.DATE_CHANGED
android.intent.action.REBOOT
android.intent.action.CONNECTIVITY_CHANGE
android.intent.action.BUG_REPORT
android.intent.action.CALL_BUTTON
Android中大致有两种广播消息:
1.有序广播
2.无序广播
有序广播是同步型广播,按序发送广播消息,序号按照android:priority 属性排列。相同优先级的广播消息将没有先后之分。
无序广播则是异步型广播,随机发送广播消息,使用Context:sendBroadcast发送广播消息。
要实现BroadcastReceiver,首先需要注册这个receiver。
有两种方式:
1.通过Context 注册
<receiver android:name="DataReceiver" > <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> intent-filter>receiver>
2.通过Manifest注册
IntentFilter filter = new IntentFilter();intentFilter.addAction(getPackageName()+"android.net.conn.CONNECTIVITY_CHANGE");MyReceiver myReceiver = new MyReceiver();registerReceiver(myReceiver, filter);
注意:Android8以上需要在代码中注册receiver才行。
具体细节请参考完整案例:
开发环境:Android Studio4.0
TestBroadcastReceiver.zip:
MyBroadcastReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); IntentFilter filter = new IntentFilter("com.funny.CUSTOM_INTENT"); receiver = new MyBroadcastReceiver(); registerReceiver(receiver, filter); }
更多相关文章
- 搭建Android手机系统开发环境
- Android从源码分析一:Looper,Handler消息机制
- Android中Google Authenticator验证系统工作原理分析
- 深入理解Android日志系统
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- Android系统架构的详细解析——很全面
- android和linux开源社区的分裂
- 【幻灯片分享】Android程序的编译,安装和运行 | 小米科技 汪文俊
- android Input系统事件分发流程