我编写了一个应用程序,只要它使用清单中声明并触发的广播接收器运行,它就需要每分钟唤醒一次,AlarmManager.setAlarmClock()
因为它是唯一一个似乎可以在 Android 7+ 上运行且不受警报重复限制的确切解决方案。
我觉得我已经按照网络上的每一个提示(尤其是 SO)来保持我的应用程序运行,但迟早它会进入打瞌睡或休眠状态,即使我将我的应用程序列入白名单Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
并且我正在使用安排下一个闹钟时,接收器内部的唤醒锁定。
负责“冻结”我的应用程序的进程是“ ash ”。我在哪里可以找到有关此过程的更多信息?它特定于制造商的操作系统吗?
如何禁用我的应用程序的打瞌睡/休眠?我一辈子都无法让这个该死的应用程序继续运行。任何提示表示赞赏!
使用的设备是带有Android 7.0的Huawei P8 lite 2017。由于源代码已经变得相当复杂,而且我认为我在代码方面所做的一切都是正确的,所以我现在不在这里发布任何代码。(不过,我会根据要求提供相应的代码示例。)
手头的问题似乎是操作系统本身的普遍问题,因为我读到很多人没有让它工作。(这太荒谬了……用设置精确计时器的能力来稍微提高电池寿命。为什么,谷歌?)
以下 catlog 输出显示了“ash”的动作;在这种情况下,它在正常工作大约半小时后冻结了我的应用程序大约半小时。我想当我再次打开并解锁手机时,该应用程序又继续工作了。
06-06 22:37:33.122 I/ash ( 1772): de.paulwilhelm.limon send broadcast: notify package: de.paulwilhelm.limon, pid: -1
06-06 22:37:33.122 I/ash ( 1772): screen off de.paulwilhelm.limon H to D, reason:bc_notify_
06-06 22:37:33.122 I/ash ( 1772): de.paulwilhelm.limon { hibernation duration=60527 } transition to: doze reason:bc_notify_
06-06 22:37:33.155 I/ash ( 1772): Unfreeze de.paulwilhelm.limon OK !
06-06 22:37:33.160 I/ash ( 1772): unproxy de.paulwilhelm.limon broadcast OK !
06-06 22:37:33.167 I/ash ( 1772): Unpending de.paulwilhelm.limon alarm OK !
06-06 22:37:33.169 I/ash ( 1772): unproxy app:de.paulwilhelm.limon,uid:10118,result:true
06-06 22:37:33.175 I/ash ( 1772): front app: de.paulwilhelm.limon goes to H
06-06 22:37:33.176 I/ash ( 1772): ignore front app :de.paulwilhelm.limon screen off:523907ms
06-06 22:37:33.176 I/ash ( 1772): de.paulwilhelm.limon is front app
06-06 22:37:33.176 I/ash ( 1772): ignore front app :de.paulwilhelm.limon screen off:523907ms
06-06 22:37:33.179 I/ash ( 1772): de.paulwilhelm.limon { doze duration=10 } transition to: hibernation reason:
06-06 22:37:33.180 I/ash ( 1772): Pending de.paulwilhelm.limon alarm OK !
06-06 22:37:33.181 I/ash ( 1772): proxy de.paulwilhelm.limon broadcast OK !
06-06 22:37:33.183 I/ash ( 1772): proxy app:de.paulwilhelm.limon,uid:10118,result:true
06-06 22:37:33.184 I/ash ( 1772): Freeze de.paulwilhelm.limon OK !
06-06 22:37:33.185 I/ash ( 1772): add listener de.paulwilhelm.limon net packet OK !,uid:10118
06-06 22:37:33.188 I/ash ( 1772): has wakelock app: de.paulwilhelm.limon, uid: 10118