老师广播接收器 Activity退出 如果不取消注册会在什么时机退出?

老师广播接收器 Activity退出 如果不取消注册会在什么时机退出?

老师广播接收器 Activity退出 如果不取消注册会在什么时机退出?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

Activity中动态注册的广播接收器,一般性写法都是此Activity中持有创建的广播接收器的对象引用,并指明广播接收器对应的接收广播类型(IntentFilter)。Activity中调用registerReceiver(mBroadcastReceiver, intentFilter)方法进行广播接收器的注册。此时,通过Binder机制向AMS(Activity Manager Service)进行注册。AMS会对应的记录Activity上下文、广播接收器以及对应的IntentFilter等内容,并形成类似于消息的发布-订阅存储模式与结构。当对应的广播发出时,在定义的广播接收器的onReceive(context, intent)方法回调中,对于Activity中动态注册的广播接收器,onReceive方法回调中的context指的是Activity Context!也就是说,Activity与mBroadcastReceiver此时实际上是通过AMS相互持有强引用的。因此,对于Activity中动态注册的广播接收器,一定要在对应的声明周期回调方法中去unregisterReceiver,以斩断此关联。否则,就会出现当前Activity的内存泄露。因此你Activity退出一定要让广播也退出。祝:学习愉快


  • 小张一号 提问者 #1
    老师这里的Context 是 Activity ,那么这个Activity是指的 注册广播的那个Activity吗?
    2020-05-26 19:13:56
  • 好帮手慕雪 回复 提问者 小张一号 #2
    嗯嗯,是的
    2020-05-26 19:14:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.Android 网络操作与流行框架
  • 参与学习           人
  • 提交作业       220    份
  • 解答问题       1800    个

本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师