如果我通过系统广播的最主要文件(例如,BroadcastReceiver )声明一个ACTION_POWER_DISCONNECTED,系统将在每次发送特定广播时调用它,因此BroadcastReceiver的生存期是不受限制的。
但是也有一些广播不能通过清单文件注册。对于这些广播,我们必须使用相应的context.registerReceiver调用IntentFilter。假设我为BOOT_COMPLETED创建了一个BOOT_COMPLETED,并从它调用了context.registerReceiver,并且永远不打电话给unregisterReceiver --这个接收器是否也会永远存在(直到重新启动电话)?
针对Android的应用程序不能再在其清单中为隐式广播注册广播接收器。隐式广播是指不专门针对应用程序的广播。
如果我上面的猜测是正确的,这将是一个很容易的解决办法,对系统的改变(当然,你不应该这样做,但这是可能的)。那么,在BroadcastReceiver广播之后注册的BOOT_COMPLETED是否与通过清单自动注册的BroadcastReceiver具有相同的生存期(直到下一次重新启动)?
发布于 2017-03-30 18:10:57
假设我为
BOOT_COMPLETED创建了一个BOOT_COMPLETED,并从它调用了context.registerReceiver,并且永远不打电话给unregisterReceiver--这个接收器是否也会永远存在(直到重新启动电话)?
首先,BOOT_COMPLETED是其中一项行动,它的行为仍将与以前一样,这意味着"O“中引入的限制与该操作无关。
一旦应用程序的进程被系统杀死,或者一旦系统清除了应用程序的内存(由于设备内存不足),您的广播注册就会丢失。否则,我看不出这一限制将如何导致更好的电池体验。
那么,在
BroadcastReceiver广播之后注册的BOOT_COMPLETED是否与通过清单自动注册的BroadcastReceiver具有相同的生存期(直到下一次重新启动)?
如果上述情况没有得到满足,即您的应用程序的进程仍然存在,并且由于内存不足,应用程序无法从内存中清除,那么是的。一旦进入缓存状态 (没有活动安卓组件的状态),注册将再次丢失。
这个纳斯尔·汗的短片将很有帮助。
https://stackoverflow.com/questions/43125202
复制相似问题