说起来这个问题很简单,只要注册和反注册成对出现就行,好像很多教材都是如此介绍。但实际开发中,对广播注册和反注册的时机把握还是很重要的。

关于广BroadcastReceiver注册和反注册时机,主要有以下几点:

onCreate - onDestroy(即便页面未显示,仍然能接受广播)
onResume - onPause(即只有页面显示时,才能接受广播)
onStart - onStop

http://stackoverflow.com/questions/21136464/when-to-use-unregisterreceiver-onpause-ondestroy-or-onstop

当注册广播时,常会遇到的问题就是重复注销广播处理函数是会报错,而且会让进程奔溃。一般来说,可以通过一个变量来保存广播处理是否被注销,每当注销时,将它标记为false。如果再次注销时遇到false就不对他进行注销处理。

曾经我遇到过几次异常,提示我的BroadcastReceiver多次被反注册,导致系统异常死掉。废了很长时间查看代码找原因。。

比如我之前常在finish方法中反注册广播,但finish方法有可能被多次调用,导致
BroadcastReceiver多次被反注册。

另外,需要注意一点,你用什么contex(上下文)注册的广播,则必须用它来反注册。

比如你调用getApplicationContext()注册,用getApplicationContext()删除。而不能直接unregisterReceiver(mFinishReceiver);和registerReceiver(mFinishReceiver,
filter);有可能找不到。

另外关于BroadcastReceiver还涉及安全性问题,可参考:

http://blog.csdn.net/t12x3456/article/details/9256609

最新文章

  1. 项目实现不同环境不同配置文件-maven profile
  2. 交换机的交换原理、mac学习机制和老化机制
  3. D3.js 学习( 一)
  4. WinForm中DataGridView显示更新数据--人性版
  5. 给jdk写注释系列之jdk1.6容器(6)-HashSet源码解析&Map迭代器
  6. .net 下载图片
  7. How to install Apache Server on Windows
  8. windows“画图”工具用法
  9. Eclipse启动Tomcat报错,系统缺少本地apr库
  10. VLC播放器架构剖析
  11. cp命令的实现
  12. Qt---Xml文件解析
  13. Android需求之点击跳转至市场评价
  14. c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”
  15. python 开发接口(一)
  16. 微信小程序总结
  17. Day17作业及默写
  18. C# IIS 服务器上传图片500解决办法
  19. Git 配置(分布式版本控制系统)
  20. SSH-简单登陆业务详解,从环境部署到代码编写

热门文章

  1. 设计模式之第0章-单例模式(Java实现)
  2. IOS开发学习笔记029-反选、全选、删除按钮的实现
  3. Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
  4. Vue+Django REST framework打造生鲜电商项目
  5. python深浅拷贝以及数据在内存中储存方法
  6. Cannot set property 'innerHTML' of null 问题的解决
  7. 如何使用 JSX 构建 Gutenberg 块
  8. 实战小项目之RTMP流媒体演示系统
  9. xstream+dom4j比较对象
  10. 【bzoj3601】一个人的数论 莫比乌斯反演+高斯消元