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);
}
下一篇: Atom+TeX Live安装配置