Android中Broadcast Receiver的两种注册方法和区别
所以,为使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(BroadcastReceiverreceiver,IntentFilterfilter);
但此方法需要解除所注册的广播:
在onStop()或onDestroy()方法中添加unRegisterReceiver(br);
两种注册类型的区别是:
1)第一种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
2)第二种不是常驻型广播,也就是说广播跟随程序的生命周期。
注:除了用于过滤广播的IntentFilter可以在代码中动态创建外,其他组件的IntentFilter必须在AndroidManifest.xml中注册,如:Activity、Service。
更多相关文章
- 哪个移动系统适合程序员?
- 如何开始为Android开发应用程序? [重复]
- Android程序老是报错
- 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V
- 当在调试模式下启动时,Android应用程序崩溃。
- 关于AndroidStudio中提示cannot resolve symble R,但程序可以正常
- 北京一年工作经验的java web开发程序员税前5K是不是要高了?
- 黑马程序员_Java基础_我的Day09学习笔记
- 《JavaScript 高级程序设计》学习总结六(1)