我的应用程序使用AlarmManager,自4年前以来一直在运行。但我注意到它开始在一些设备上失效。
我非常确定代码是正确的(我正在使用WakefulBroadcastReceiver,并且对于具有Doze的设备使用setExactAndAllowWhileIdle),因为它在Nexus设备上完美地工作,但在某些制造商的设备(华为,小米等)上失败了。
例如,华为设备有一种电池管理器会杀死应用程序,当应用程序被杀死时,计划的闹钟也会被取消。因此,在华为电池管理器中将应用程序设置为“受保护”可以解决问题。
但最近我发现它在更多设备中不起作用:小米,三星(也许与新的“智能管理器”有关?)...似乎这种行为正在成为标准:杀死后台应用程序。
有人知道任何相关信息吗?有什么方法可以确保闹钟被触发吗?
编辑:这个问题是由不同制造商添加的“省电模式”引起的。 更多信息请参见:https://dontkillmyapp.com/
我非常确定代码是正确的(我正在使用WakefulBroadcastReceiver,并且对于具有Doze的设备使用setExactAndAllowWhileIdle),因为它在Nexus设备上完美地工作,但在某些制造商的设备(华为,小米等)上失败了。
例如,华为设备有一种电池管理器会杀死应用程序,当应用程序被杀死时,计划的闹钟也会被取消。因此,在华为电池管理器中将应用程序设置为“受保护”可以解决问题。
但最近我发现它在更多设备中不起作用:小米,三星(也许与新的“智能管理器”有关?)...似乎这种行为正在成为标准:杀死后台应用程序。
有人知道任何相关信息吗?有什么方法可以确保闹钟被触发吗?
编辑:这个问题是由不同制造商添加的“省电模式”引起的。 更多信息请参见:https://dontkillmyapp.com/