待机模式和前台服务

17

检查我的应用程序在M预览设备上的行为,似乎其具有活动通知的前台服务播放音乐不受Doze模式影响。 但是阅读文档后发现,前台服务仅免除于AppStandby。

真正的规则是什么?


1
这不是预期的行为吗?Doze模式不应该关闭活动服务,因为设备正在被积极使用。 - Aegis
1
是的,但是阅读文档后发现前台服务仅在应用待机模式下保留。 - GPack
你确定你处于待机模式吗?你需要让手机在水平面上静止一小时(例如放在桌子上)。根据文档,应该启用待机模式并且系统应该忽略你的唤醒锁。 - greywolf82
我通过 adb shell dumpsys deviceidle step 命令进行测试,一步步执行直到设备进入IDLE状态:它肯定是处于Doze模式。 - GPack
1
请问您能否展示一些创建前台服务的代码?因为在我的情况下,即使前台服务在单独的进程中运行,也无法正常工作。我使用了“adb shell dumpsys deviceidle force-idle”进行测试。 - Domen Jakofčič
显示剩余2条评论
2个回答

33

这篇文章的评论中,Dianne Hackborn在9月17日写道:

已经运行前台服务(带有相关通知)的应用程序不受Doze限制。

因此,是的,你的发现似乎是预期的行为。


9
回复晚了,但我正在测试一个前台服务。在这个服务中,我实现了一个Logwriter,每隔几秒钟,我会将信息写入一个文本文件。如果应用处于待机/省电模式,则不会写入任何内容,直到我唤醒设备。那么,应用程序是处于待机状态还是省电模式不允许写入外部文件? - Opiatefuchs
1
类似于opiatefuchs遇到的问题。已经有解决方案了吗? - Napolean
4
您的问题可能与一个错误相关,即当前台服务未在单独进程中运行时,它仍可能受到待机模式的影响。请参见 https://code.google.com/p/android/issues/detail?id=193802。 - sec_aw

0

注意,前台服务可以防止您的应用程序进入应用待机状态,但无法防止系统的深度休眠模式(Doze)。

在此使用 adb 命令进行测试

$ adb shell dumpsys battery unplug    
$ adb shell am set-inactive <packageName> true

2
我已经为您编辑了代码格式,但其余部分仍然非常不清楚 - 也许需要修改一下? - Benjamin W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接