Android BroadcastReceiver的简单使用

来源:互联网 发布:mac怎么关闭开机密码 编辑:程序博客网 时间:2024/06/06 10:11

创建广播接收器:

创建自己的BroadcastReceiver,我们需要继承android.conent.BroadcastReceiver,并实现其onReceiver()方法:

  1. public class MyBroadcastReceiver extends BroadcastReceiver {  
  2.       
  3.     private static final String TAG = "MyBroadcastReceiver";  
  4.       
  5.     @Override  
  6.     public void onReceive(Context context, Intent intent) {  
  7.         String msg = intent.getStringExtra("msg");  
  8.         Log.i(TAG, msg);  
  9.     }  
  10.   
创建完成Receiver之后,需要对该接收器注册一个指定的广播地址。分为静态注册和动态注册。


静态注册:

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

  1. <receiver android:name=".MyBroadcastReceiver">  
  2.     <intent-filter>  
  3.           <action android:name="android.intent.action.MY_BROADCAST" />  
  4.           <category android:name="android.intent.category.DEFAULT" />  
  5.     </intent-filter>  
  6. </receiver> 


动态注册:

动态注册需要在代码中动态的指定广播的地址并注册,通常是在Activity或是Service中注册广播。

  1. MyBroadcastReceiver receiver = new MyBroadcastReceiver();  
  2.           
  3. IntentFilter filter = new IntentFilter();  
  4. filter.addAction("android.intent.action.MY_BROADCAST");  
  5.           
  6. registerReceiver(receiver, filter); 
在Activity或是Service中注册广播后,需要在onDestroy()方法中解除注册:

  1. @Override  
  2. protected void onDestroy() {  
  3.     super.onDestroy();  
  4.     unregisterReceiver(receiver);  

两种注册方法的区别:

静态注册是常驻型,也就是说当应用关闭后,如果有广播传来,MyBroadcastReceiver也会被系统调用而自动运行

动态注册不是常驻型,也就是广播会跟随程序的生命周期。


发送(普通)广播:

  1. Intent intent = new Intent("android.intent.action.MY_BROADCAST");  
  2. intent.putExtra("msg""Hello, BroadcastReceiver.");  
  3. sendBroadcast(intent);  

注:有关普通广播和有序广播相关的内容请看我的另一篇博文:Android的普通广播和有序广播。


0 0
原创粉丝点击