BroadcastReceiver(二)

2018-08-08  本文已影响0人  爱编程的小火柴

    要创建自己的BroadcastReceiver对象,我们需要继承BroadcastReceiver类,并实现其onReceive 方法。 在onReceive方法内,我们可以获取随广播而来的Intent中的数据,这非常重要,就像无线电一样,包含很多有用的信息。 在创建完我们的BroadcastReceiver之后,还不能够使它进入工作状态,我们需要为它注册一个指定的广播地址。没有注册广播地址的BroadcastReceiver就像一个缺少选台按钮的收音机,虽然功能俱备,但也无法收到电台的信号。所以创建类后就要对BroadcastReceiver进行注册。                          创建一个 BroadcastReceiver:                        public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //对接收到的广播进行处理,可接收多个广播,根据判断进行处理intent里面包含传递过来的数据 } }                              注册BroadcastReceiver:                                1.静态注册

静态注册是在AndroidManifest.xml文件中配置的

<receiver android:name="com.hua.bcreceiver.MyBroadcastReceiver" >

<intent-filter>

  <action android:name="android.intent.action.MY_BROADCAST" />

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

</intent-filter>

      </receiver>

2.动态注册

      动态注册需要在代码中动态的指定广播地址并注册

      注意,registerReceiver是android.content.ContextWrapper类中的方法,Activity 和Service都继承了ContextWrapper,所以可以直接调用。 在实际应用中,我们在 Activity或Service中注册了一个BroadcastReceiver,当这个Activity或Service被销毁时 如果没有解除注册,系统会报一个异常,提示我们是否忘记解除注册了。所以,记得在 特定的地方执行解除注册操作。

注册代码

MyBroadcastReceiver mbcr = new MyBroadcastReceiver(); IntentFilter filter = new IntentFilter();          filter.addAction(MyBroadcastReceiver.MY_BC_FIRST);

registerReceiver(mbcr, filter);// 注册

(2)解除注册代码,一般在页面销毁时操作

@Override

protected void onDestroy() {

        unregisterReceiver(mbcr);

        mbcr = null;

        super.onDestroy();

    }

上一篇 下一篇

猜你喜欢

热点阅读