Android BroadcastReceiver 注册和反注册
2024-10-20 20:31:34
说起来这个问题很简单,只要注册和反注册成对出现就行,好像很多教材都是如此介绍。但实际开发中,对广播注册和反注册的时机把握还是很重要的。
关于广BroadcastReceiver注册和反注册时机,主要有以下几点:
onCreate - onDestroy(即便页面未显示,仍然能接受广播)
onResume - onPause(即只有页面显示时,才能接受广播)
onStart - onStop
当注册广播时,常会遇到的问题就是重复注销广播处理函数是会报错,而且会让进程奔溃。一般来说,可以通过一个变量来保存广播处理是否被注销,每当注销时,将它标记为false。如果再次注销时遇到false就不对他进行注销处理。
曾经我遇到过几次异常,提示我的BroadcastReceiver多次被反注册,导致系统异常死掉。废了很长时间查看代码找原因。。
比如我之前常在finish方法中反注册广播,但finish方法有可能被多次调用,导致
BroadcastReceiver多次被反注册。
另外,需要注意一点,你用什么contex(上下文)注册的广播,则必须用它来反注册。
比如你调用getApplicationContext()注册,用getApplicationContext()删除。而不能直接unregisterReceiver(mFinishReceiver);和registerReceiver(mFinishReceiver,
filter);有可能找不到。
另外关于BroadcastReceiver还涉及安全性问题,可参考:
最新文章
- 项目实现不同环境不同配置文件-maven profile
- 交换机的交换原理、mac学习机制和老化机制
- D3.js 学习( 一)
- WinForm中DataGridView显示更新数据--人性版
- 给jdk写注释系列之jdk1.6容器(6)-HashSet源码解析&;Map迭代器
- .net 下载图片
- How to install Apache Server on Windows
- windows“画图”工具用法
- Eclipse启动Tomcat报错,系统缺少本地apr库
- VLC播放器架构剖析
- cp命令的实现
- Qt---Xml文件解析
- Android需求之点击跳转至市场评价
- c#重命名文件,报错“System.NotSupportedException”类型的未经处理的异常在 mscorlib.dll 中发生”
- python 开发接口(一)
- 微信小程序总结
- Day17作业及默写
- C# IIS 服务器上传图片500解决办法
- Git 配置(分布式版本控制系统)
- SSH-简单登陆业务详解,从环境部署到代码编写
热门文章
- 设计模式之第0章-单例模式(Java实现)
- IOS开发学习笔记029-反选、全选、删除按钮的实现
- Python+Selenium框架设计篇之-简单介绍unittest单元测试框架
- Vue+Django REST framework打造生鲜电商项目
- python深浅拷贝以及数据在内存中储存方法
- Cannot set property 'innerHTML' of null 问题的解决
- 如何使用 JSX 构建 Gutenberg 块
- 实战小项目之RTMP流媒体演示系统
- xstream+dom4j比较对象
- 【bzoj3601】一个人的数论 莫比乌斯反演+高斯消元