Cil*_*nco 8 android android-intent android-broadcastreceiver android-8.0-oreo
如果我BroadcastReceiver通过mainfest文件声明一个系统广播(例如ACTION_POWER_DISCONNECTED),系统将在每次发送特定广播时调用它,因此BroadcastReceiver的生命周期不受限制.
但也有广播无法通过清单文件注册.对于这些广播,我们必须context.registerReceiver与相应的电话进行通话IntentFilter.假设我为它创建一个BroadcastReceiver BOOT_COMPLETED并context.registerReceiver从中调用,并且从不调用unregisterReceiver此接收器是否也永远存在(直到手机重新启动)?
针对Android O的应用无法再在其清单中为隐式广播注册广播接收器.隐式广播是一种不专门针对该应用的广播.
如果我的猜想是正确的,这将是一个简单的系统更改解决方法(当然你不应该这样做,但它是可能的).那么BroadcastReceiver在BOOT_COMPLETED广播具有相同的生命周期(保持到下一次重启)之后注册的是作为通过清单自动注册的BroadcastReceiver吗?
假设我创建了一个
BroadcastReceiverforBOOT_COMPLETED和context.registerReceiver来自它的呼叫,并且从不打电话unregisterReceiver这个接收器是否也永远存在(直到手机重启)?
首先,BOOT_COMPLETED是这些行动之一,仍然会像他们之前,这意味着在"O"引入的限制并不关注这一行动.
一旦您的应用程序被系统杀死,或者系统一旦清除了应用程序的内存(由于设备内存不足),您的广播注册就会丢失.否则我无法看到这种限制将如何带来更好的电池体验.
那么
BroadcastReceiver在BOOT_COMPLETED广播具有相同的生命周期(直到下次重启)之后BroadcastReceiver注册的是通过清单自动注册的?
如果上述情况未得到满足,即您的应用程序保持活动状态且应用程序因内存不足而无法从内存中清除 - 那么是.一旦进入缓存状态(没有活动Android组件的状态),注册将再次丢失.
Nasir Khan的这段短片将有所帮助.
| 归档时间: |
|
| 查看次数: |
3949 次 |
| 最近记录: |