如果我声明一个BroadcastReceiver
通过系统广播的清单文件(例如ACTION_POWER_DISCONNECTED
)系统将在每次发送特定广播时调用它,因此 BroadcastReceiver 的生命周期不受限制。
但也有一些广播无法通过清单文件注册。对于这些广播,我们必须调用context.registerReceiver
与相应的IntentFilter
。假设我创建了一个 BroadcastReceiverBOOT_COMPLETED
并打电话context.registerReceiver
从此不再打电话unregisterReceiver
该接收器是否也永远有效(直到手机重新启动)?
面向 Android O 的应用程序无法再在其清单中注册隐式广播的广播接收器。隐式广播是不专门针对该应用程序的广播。
如果我上面的猜想是正确的,这将是系统更改的一个简单的解决方法(当然你不应该这样做,但这是可能的)。一个也是如此BroadcastReceiver
这是在之后注册的BOOT_COMPLETED
广播是否与通过清单自动注册的 BroadcastReceiver 具有相同的生命周期(一直持续到下次重新启动)?
假设我创建了一个BroadcastReceiver
for BOOT_COMPLETED
并打电话context.registerReceiver
从此不再打电话unregisterReceiver
该接收器是否也永远有效(直到手机重新启动)?
First, BOOT_COMPLETED
is 其中一项行动 https://developer.android.com/preview/features/background-broadcasts.html,仍然会像以前一样表现,这意味着“O”中引入的限制与该操作无关。
一旦您的应用程序的进程被系统杀死或系统清除您的应用程序的内存(由于设备内存不足),您的广播注册就会丢失。否则我看不出这个限制将如何带来更好的电池体验。
一个也是如此BroadcastReceiver
这是在之后注册的BOOT_COMPLETED
广播具有与广播相同的生命周期(保留到下一次重新启动)BroadcastReceiver
哪个是通过清单自动注册的?
如果不满足上述情况,即您的应用程序的进程保持活动状态,并且由于内存不足而没有从内存中清除应用程序 - 那么是的。一旦进入缓存状态 https://developer.android.com/guide/topics/processes/process-lifecycle.html(没有活动的Android组件的状态)注册将再次丢失。
This 纳西尔·汗 (Nasir Khan) 的短视频 https://www.youtube.com/watch?v=63pKwVE4Uog会有帮助的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)