当前位置:  开发笔记 > Android > 正文

AlarmManager无法在多个设备中运行

如何解决《AlarmManager无法在多个设备中运行》经验,为你挑选了2个好方法。

我的应用程序使用AlarmManager,它自4年前开始运作.但我注意到它在某些设备上开始失败.

我很确定代码是正确的(我正在使用WakefulBroadcastReceiver,而setExactAndAllowWhileIdle用于带有Doze的设备),因为它在Nexus设备上运行良好,但在一些制造商的设备中失败(华为,小米......).

例如,华为设备有一种杀死应用程序的电池管理器,当应用程序被杀时,预定的警报会被取消.因此,在华为电池管理器中将应用程序设置为"受保护"可以解决问题.

但最近我注意到它没有使用更多的设备:小米,三星(也许它与新的"智能管理器"有关?)......似乎这种行为正在成为标准:杀死后台应用程序.

有人知道吗?是否有任何方法可以确保报警?



1> ATom..:

我已经好几个星期了解它.我一无所获.华为只是在一段时间后杀了所有的闹钟.如果我将应用程序放在他们的电池保护程序中受保护的应用程序,它没有帮助.但是,如果我更改我的应用程序的包名称以包含警报,时钟或日历等字样,它就像在任何其他设备上一样正常工作.我不明白谷歌如何为这个垃圾提供认证.我认为OEM不应该以这种方式修改核心平台.我知道他们有自己的击球手保护程序,在用户不使用它之后会在一段时间后杀死应用程序.但这种杀戮也会引发受保护应用的警报

setAlarmClock()也可以提供准确的定时报警.但是不可能将它用于像widget更新这样的思考.



2> S A..:

问题是智能管理器.三星有一个电池管理器,有时会禁用某些应用程序在后台运行.它在回到应用程序时尝试"恢复"但完全禁用了应用程序,或者可能每5分钟左右恢复一次(具体取决于三星的使用方式).

这将适用于Android的股票版本,因为没有三星管理器.你也可以安装自定义版本的android,它有一些功能来启用SM(取决于ROM).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有