所以,为使Receiver与广播的某Intent相匹配,则需要注册该Receiver,注册一个广播接收者Receiver方法有两种。
第一种是在android的manifest中静态注册:
<receiver android: name =“包名.自己扩展的广播接收者名”>
<intent-filter>
<!----和Intent中的action对应--->
<actionandroid:name=“com.forrest.action.mybroadcast”/>
</intent-filter>
</receiver>
第二种是在代码中动态注册:
IntentFilter filter = new IntentFilter(“com.forrest.action.mybroadcast”);//和广播中Intent的action对应;
MyBroadcastReceiver br= newMyBroadcastReceiver();
registerReceiver(br, filter); // registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
但此方法需要解除所注册的广播:
在onStop()或onDestroy()方法中添加unRegisterReceiver(br);
两种注册类型的区别是:
1)第一种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
2)第二种不是常驻型广播,也就是说广播跟随程序的生命周期。
注:除了用于过滤广播的IntentFilter可以在代码中动态创建外,其他组件的IntentFilter必须在AndroidManifest.xml中注册,如:Activity、Service。