1.概念和作用
BroadcastReceiver 广播接受者,用来接收系统和应用内部的广播。
使用BraodcastReceiver接收广播通知,并可以做出回应的一个组件。通过广播我们可以监听到很多系统相关的变化列如电量、时间、网络、开机等等相应变化,根据这些变化我们可以更好的根据自己的需求做相应的处理。
2.BroadcastReceiver的使用
使用BroadcaseReceiver,就要在代码中进行注册,BroadcastReceiver俩种注册方式,动态注册和静态注册。
首先,创建一个BroadcastReceiver。创建自己的BroadcastReceiver对象,需要继承android.content.BroadcastReceiver,并实现其onReceive方法
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
//收到广播后处理
String action = intent.getAction();
}
}
}
(1)动态注册,一般在activity或service中注册一个广播
private Receiver mReceiver = new Receiver();
IntentFilter myIntentFilter = new IntentFilter();
myIntentFilter.addAction(android.intent.action.ACTION_NAME);
registerReceiver(mReceiver,myIntentFilter);
//实现BroadcastReceiver方法,接受第三个文件发来的广播
//当此页面销毁的时候,解除广播。registerReceiver是android.content.ContextWrapper类中的方法,Activity和Service都继承了ContextWrapper,所以可以直接调用。在实际应用中,在Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册。
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
动态注册方式,不是常驻型的,广播会跟随程序的生命周期。
(2)静态注册 ,在AndroidManifest.xml文件中配置。
<receiver android:name=".Receiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_NAME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
配置了以上信息之后,只要是android.intent.action.ACTION_NAME这个地址的广播,Receiver都能够接收的到。这种方式的注册是常驻型的,当应用关闭后,如果有广播信息传来,Receiver也会被系统调用而自动运行。
(3)发送广播
以上俩种方式注册完后可以使用以下方式发送广播
//在第三个文件发送广播
Intent mIntent=new Intent(android.intent.action.ACTION_NAME);
mIntent.putExtra("broadcast", "hello");
sendBroadcast(mIntent);