1

我编写了一个应用程序,只要它使用清单中声明并触发的广播接收器运行,它就需要每分钟唤醒一次,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
4

1 回答 1

1

作为一名华为用户,我也遭遇过这个进程“灰烬”和休眠模式。确实扩展(甚至可能解决)的是使用前台服务(这可能是您正在做的事情),将通知的重要性提高到 IMPORTANCE_MAX,最重要的是,让华为手动管理您的应用程序的电源,方法是进入设置 - -> 电池--> 发射。在那里找到您的应用程序,单击它,打开每个选项(其中还包括“在后台运行”)并让它说“手动管理”。

这就是解决我的问题的方法,希望它也能解决您的问题。

于 2018-12-20T09:12:01.540 回答