Android四大组件之BroadcastReceiver

magic00 2014-02-26

1、如何接收广播

接收广播首先要编写一个广播接收器类,该类必须从BroadcastReceiver或者子类继承。

在BroadcastReveiver.onReceive(Context context,Intent intent)中编写处理广播的代码,并且要在AndroidManifest.xml中注册。

1)自定义BroadcastReceiver类

class MyBroadcastReceiver extends BroadcastReceiver{
      @Override
      public void onReceive(Context context,Intent intent){
         //当接收广播后要执行的代码
         //如果同一个广播接收器处理多个广播,则可以使用intent.getAction()来判断
           if("action1".equals(intent.getAction()){
               .....
           }else if ("action1".equals(intent.getAction()){
               .....
           }
      }
  }
 

2)注册广播,在AndroidManifest.xml添加活着动态注册

<receiver android:name=".MyBroadcastReceiver">  
        <!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 -->   
        <intent-filter>  
            <action android:name="com.lydia.broadcast.test"/>  
        </intent-filter>  
    </receiver>
 

3)发送广播

//指定广播动作
   Intent intent = new Intent("com.lydia.broadcast.test");
   // 添加category
   intent.addCategory("com.lydia.mycategory");
   // 设置广播数据
   intent.putExtra("name","broadcast_data");
   // 发送广播
   sendBroadcast(intent); //发送广播事件
 

#######################################

2、注册方法有2种:动态注册和静态注册

1)静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。

<receiver android:name=".MyBroadcastReceiver">  
        <!-- intent过滤器,指定可以匹配哪些intent, 一般需要定义action,可以是自定义的也可是系统的 -->   
        <intent-filter>  
            <action android:name="com.lydia.broadcast.test"/>  
        </intent-filter>  
</receiver>
 2)动态注册:在代码中通过registReceiver()手工注册,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁。
//注册代码:  
     //生成BraodcastReceiver对象
      MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
      //生成一个IntentFilter对象 
      IntentFilter filter = new IntentFilter();
      filter.addAction("com.lydia.broadcast.test");
      //将BroadcastReceiver对象注册到系统当中  
      MyActivity.this.registerReveiver(myReceiver,filter);     
 // 销毁代码:
     unregisterReceiver(myReceiver);

相关推荐