您的位置:首页 > 移动开发 > Android开发

Android-BroadCastReceiver

2015-09-09 15:28 453 查看
广播接收者(BroadCastReceiver)用于接收广播intent,广播intent的发送是通过调用context.sendBroadcast()、context.sendOrderedBroadcast()来实现的,通常一个广播intent被订阅了此intent的多个广播接收者来接收。

广播是一种广泛应用在应用程序之间传输信息的机制,而BroadCastReceiver是对发送出来的广播进行过滤、接收并相应的一类组件。

程序启动BroadCastReceiver的步骤:

第一步:创建需要启动BroadCastReceiver的Intent。

第二步:调用context的sendBroadcast()或sendOrderedBroadcast()来启动指定的BroadCastREceiver。其中sendOrderedBroadcast()发送的是有序广播。

当应用发出一个Broadcast Intent之后所匹配该Intent的组件都可能被启动。

创建BroadCastReceiver的步骤:

第一步:创建BroadCastReceiver的子类。

由于BroadcastReceiver本质上是个监听器,所以创建BroadCastReceiver的方法也非常简单,只要创建一个BroadCastReceiver的子类然后重写onReceive()方法即可。

第二步:注册BroadCastReceive。

一旦实现了BroadCastReceiver,接下来就应该指定该BroadCastReceiver

能匹配的Intent,即注册BroadCastReceiver,注册BroadCastReceiver的方式有两种:

第一种是静态注册:

这种方法是在配置Manifest.xml文件中注册,通过这种方式注册的广播为常驻型广播,也就是说如果应用程序关闭了,有相应事件触发,程序还是会被系统自动调用执行。例如:

<!-- 在配置文件中注册BroadcastReceiver能够匹配的Intent
-->

<receiver android:name="com.example.test.MyBroadcastReceiver">

    <intent-filter>

        </action>

        <categoryandroid:name="android.intent.category.DEFAULT"></category>

    </intent-filter>

</receiver>

第二种是动态注册:

这种方式是通过代码在.java文件中进行注册。通过这种方式注册的广播为非常驻型广播,即它会跟随activity的生命周期,所以在Activity结束前我们要调用unregisterReceiver(receiver)移除它。例如:

//通过代码的方式动态注册MyBroadcastReceiver

MyBroadcastReceiver receiver=new
MyBroadcastReceiver();

IntentFilter filter=new
IntentFilter();

filter.addAction("android.intent.action.MyBroadcastReceiver");

//注册receiver
registerReceiver(receiver, filter);

注意:如果我们在Activity中注册了BroadCastReceiver,就必须在Activity销毁的时候主动撤销注册,否则会出异常。例如:

protected void onDestroy() {

          //TODO Auto-generated method stub

          super.onDestroy();

          //当Activity销毁的时候取消注册BroadcastReceiver

          unregisterReceiver(receiver);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: