Broadcast Receiver
同样也是Android的四大组件之一,我们将它称为广播接受器.
Broadcast Receiver基础知识
Android系统会随时随地的发送各种各样的广播信息,如开机完成,网络状态改变,有短信到达等.这些广播都可以被开发者所捕获,我们可以通过Broadcast Receiver
去获取我们感兴趣的广播.
Broadcast Receiver的创建
要创建自己的Broadcast Receiver
对象,需要继承系统的BroadcastReceiver
类并实现其onReceive()
方法:1
2
3
4
5
6
7
8public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String ACTION = "android.intent.action.MyBroadcastReceiver";
public void onReceive(Context context, Intent intent) {
Log.i("bail", "MyBroadcastReceiver接收到数据:" + intent);
}
}
在onReceive()
方法内,我们可以获取Intent中的数据.创建完我们的Broadcast Receiver
后,我们需要给它注册一个广播地址才能正常工作.
我们可以在AndroidManifest.xml
文件中进行配置:1
2
3
4
5
6<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.MyBroadcastReceiver" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
配置了以上信息之后,只要是android.intent.action.MyBroadcastReceiver
这个地址的广播,MyReceiver都能够接收的到。注意,这种方式的注册是常驻型的,也就是说当应用关闭后,如果有广播信息传来,MyReceiver也会被系统调用而自动运行。
除此之外,我们也可以在代码中动态的指定广播地址并注册,我们可以在Activity
或Service
中进行注册:1
2
3
4MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(MyBroadcastReceiver.ACTION);
registerReceiver(receiver,filter );
在这里,我们的Broadcast Receiver
的生命周期是与注册的组件绑定在一起的,所有在注册组件的onDestroy()
中进行解除注册:1
2
3
4
5
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
当注册完成后我们便可以向我们的Broadcast Receiver
发送广播了:1
2
3Intent intent = new Intent(this, MyBroadcastReceiver.class);
intent.putExtra("msg", "send msg!");
sendBroadcast(intent);
更多关于Broadcast Receiver的内容可以查看官方手册.