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

关于广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

Android BroadcastReceiver 注册和反注册的更多相关文章

  1. ActiveX控件的注册和反注册

    原文转自 https://blog.csdn.net/piaopiaopiaopiaopiao/article/details/41649495 ActiveX控件,需要注册之后才能使用. 注意:注册 ...

  2. dll的注册与反注册

    regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:regsvr32 [/i[:cmdline]] DLL文件名命令可以在"开始→运行 ...

  3. springcloud 服务注册、反注册 AOP 拦截,实现自定义功能

    @Aspect@Component@Order(1000)public class EurekaServerAspect {private Logger logger = Logger.getLogg ...

  4. 7.Go退出向Consuk反注册服务,优雅关闭服务

    注册和反注册代码 package utils import ( consulapi "github.com/hashicorp/consul/api" "log" ...

  5. Android中BroadcastReceiver的两种注册方式(静态和动态)详解

    今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...

  6. Android(java)学习笔记173:BroadcastReceiver之 静态注册 和 动态注册

    1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...

  7. BroadcastReceiver(广播)的静态注册和动态注册 --Android开发

    BroadcastReceiver是安卓四大组件之一,本例通过代码的方式演示静态注册和动态注册. 1.静态注册 静态注册只需要AndroidManifest.xml中进行配置: AndroidMani ...

  8. Android(java)学习笔记116:BroadcastReceiver之 静态注册 和 动态注册

    1. 广播接受者>什么是广播.收音机.电台:对外发送信号.收音机:接收电台的信号. >在android系统里面,系统有很多重要的事件: 电池电量低,插入充电器,sd卡被移除,有电话打出去, ...

  9. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

随机推荐

  1. 5、CSS基础part-3

    1.CSS列表 ①类型 ul.disc {list-style-type: disc} ②位置 ul.inside {list-style-position: inside} ③列表图像 2.表格

  2. Python+Selenium练习篇之8-利用css定位元素

    前面介绍了,XPath, id , class , link text, partial link text, tag name, name 七大元素定位方法,本文介绍webdriver支持的最后一个 ...

  3. 带线表格据gt生成无线表格

    json解析练习,python图像处理练习,表格包围框毛刺问题待解决. # -*- coding: utf-8 -*- # coding: utf-8 from PIL import Image, I ...

  4. Docker Hadoop LAMP安装配置教程

    以下教程来自九章算法. 1.How to install Dockerhttps://bupt.quip.com/YehSAR4qnGqB 2.How to set up hadoop environ ...

  5. 爬虫:Scrapy1

    Python 2.7 npm install scrapy 步骤: 创建一个 Scrapy 项目 定义提取的 Item 编写爬取网站的 Spider 并提取 Item 编写 Item Pipeline ...

  6. 微信小程序--问题汇总及详解之form表单

    附上微信小程序开发文档链接:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/MINA.html form表单: 当点击 <form/> ...

  7. 【转】log4js在PM2的cluster模式下大坑

    请直接查看原文:https://blog.yourtion.com/fix-log4js-with-pm2-not-work.html 之前一直使用 debug 还有 console.log 去打日志 ...

  8. Ethernet,token ring,FDDI,ATM,WLAN

    局域网(Local Area Network:LAN) 通常我们常见的"LAN"就是指局域网,这是我们最常见.应用最广的一种网络.现在局域网随着整个计算机网络技术的发展和提高得到充 ...

  9. Threadlocal_笔记

    参考:https://www.jianshu.com/p/377bb840802f https://www.cnblogs.com/dreamroute/p/5034726.html ThreadLo ...

  10. redis学习(六)主从复制

    主从复制:主机更新数据后,根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slaver以读为主.redis支持主从复制. 下面通过实例来讲解主从复制的四个模式: ...