创建广播接收器:
创建自己的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);
- }
- }
静态注册:
静态注册是在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);
- @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的普通广播和有序广播。