首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Android更改相关的BroadcastReceiver的生存期

与Android更改相关的BroadcastReceiver的生存期
EN

Stack Overflow用户
提问于 2017-03-30 17:59:55
回答 1查看 4.7K关注 0票数 9

如果我通过系统广播的最主要文件(例如,BroadcastReceiver )声明一个ACTION_POWER_DISCONNECTED,系统将在每次发送特定广播时调用它,因此BroadcastReceiver的生存期是不受限制的。

但是也有一些广播不能通过清单文件注册。对于这些广播,我们必须使用相应的context.registerReceiver调用IntentFilter。假设我为BOOT_COMPLETED创建了一个BOOT_COMPLETED,并从它调用了context.registerReceiver,并且永远不打电话给unregisterReceiver --这个接收器是否也会永远存在(直到重新启动电话)?

针对Android的应用程序不能再在其清单中为隐式广播注册广播接收器。隐式广播是指不专门针对应用程序的广播。

如果我上面的猜测是正确的,这将是一个很容易的解决办法,对系统的改变(当然,你不应该这样做,但这是可能的)。那么,在BroadcastReceiver广播之后注册的BOOT_COMPLETED是否与通过清单自动注册的BroadcastReceiver具有相同的生存期(直到下一次重新启动)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 18:10:57

假设我为BOOT_COMPLETED创建了一个BOOT_COMPLETED,并从它调用了context.registerReceiver,并且永远不打电话给unregisterReceiver --这个接收器是否也会永远存在(直到重新启动电话)?

首先,BOOT_COMPLETED其中一项行动,它的行为仍将与以前一样,这意味着"O“中引入的限制与该操作无关。

一旦应用程序的进程被系统杀死,或者一旦系统清除了应用程序的内存(由于设备内存不足),您的广播注册就会丢失。否则,我看不出这一限制将如何导致更好的电池体验。

那么,在BroadcastReceiver广播之后注册的BOOT_COMPLETED是否与通过清单自动注册的BroadcastReceiver具有相同的生存期(直到下一次重新启动)?

如果上述情况没有得到满足,即您的应用程序的进程仍然存在,并且由于内存不足,应用程序无法从内存中清除,那么是的。一旦进入缓存状态 (没有活动安卓组件的状态),注册将再次丢失。

这个纳斯尔·汗的短片将很有帮助。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43125202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档