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

Android BroadcastReceiver的简单使用

2016-09-01 15:53 435 查看
创建广播接收器:

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

public class MyBroadcastReceiver extends BroadcastReceiver {  

      

    private static final String TAG = "MyBroadcastReceiver";  

      

    @Override  

    public void onReceive(Context context, Intent intent) {  

        String msg = intent.getStringExtra("msg");  

        Log.i(TAG, msg);  

    }  

  



创建完成Receiver之后,需要对该接收器注册一个指定的广播地址。分为静态注册和动态注册。

静态注册:

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

<receiver android:name=".MyBroadcastReceiver">  

    <intent-filter>  

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

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

    </intent-filter>  

</receiver> 

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

MyBroadcastReceiver receiver = new MyBroadcastReceiver();  

          

IntentFilter filter = new IntentFilter();  

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

          

registerReceiver(receiver, filter); 

在Activity或是Service中注册广播后,需要在onDestroy()方法中解除注册:

@Override  

protected void onDestroy() {  

    super.onDestroy();  

    unregisterReceiver(receiver);  



两种注册方法的区别:

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

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

发送(普通)广播:

Intent intent = new Intent("android.intent.action.MY_BROADCAST");
 

intent.putExtra("msg", "Hello,
BroadcastReceiver.");  

sendBroadcast(intent);  

注:有关普通广播和有序广播相关的内容请看我的另一篇博文:Android的普通广播和有序广播
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息