所以,为使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。
本文介绍了Android中的BroadcastReceiver组件,详细解释了其工作原理、使用场景及注册方式。BroadcastReceiver能够监听并响应系统或应用程序发出的广播Intent,适用于消息传递、状态通知等场景。
843

被折叠的 条评论
为什么被折叠?



