Android 打瞌睡模式与前台服务

Android 打瞌睡模式与前台服务,android,android-mediaplayer,android-6.0-marshmallow,Android,Android Mediaplayer,Android 6.0 Marshmallow,在M Preview设备上检查我的应用程序的行为,它的前台(带有活动通知)服务播放音乐似乎不受打盹模式的影响。 但在阅读文档时,前台服务似乎只豁免了AppStandby 真正的规则是什么?In在9月17日的评论中写道: 已运行前台服务(带有相关通知)的应用程序不受doze的限制 是的,你的发现似乎是你想要的行为。注意,前台服务可以防止你的应用程序永远进入应用程序待机状态,但不能打瞌睡 这里使用adb cmd进行测试 $ adb shell dumpsys battery unplug $

在M Preview设备上检查我的应用程序的行为,它的前台(带有活动通知)服务播放音乐似乎不受打盹模式的影响。 但在阅读文档时,前台服务似乎只豁免了AppStandby

真正的规则是什么?

In在9月17日的评论中写道:

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


是的,你的发现似乎是你想要的行为。

注意,前台服务可以防止你的应用程序永远进入应用程序待机状态,但不能打瞌睡

这里使用adb cmd进行测试

$ adb shell dumpsys battery unplug    
$ adb shell am set-inactive <packageName> true
$adb外壳转储系统电池拔出
$adb外壳am设置为非活动真

这不是预期的行为吗?打瞌睡模式不应关闭活动服务,因为设备正在使用中。是的,但在阅读文档时,前台服务似乎仅在应用程序待机模式下保留。您确定处于打瞌睡模式吗?你需要让手机在水平面上静止一小时(例如桌子)。根据文档,应该启用doze,系统应该忽略你的wakelock。我通过
adb shell dumpsys deviceidle step
step对它进行了测试,直到我得到设备的空闲状态:它肯定是在doze中。你能在创建前台服务的地方显示一些代码吗,因为在我的情况下不起作用,即使前台服务在单独的进程中运行。我使用“adb shell dumpsys deviceidle force idle”进行了测试,我已经编辑了您的代码格式回答,但其余内容仍然不清楚-可能会修改?回复晚了,但我正在测试前台服务。在该服务中,我实现了一个日志编写器,每隔几秒钟,我就将信息写入一个文本文件。如果启动应用程序待机/打瞌睡模式,则在我唤醒设备之前不会写入任何内容。那么,是应用程序中的应用程序处于待机状态还是打瞌睡模式不允许写入外部文件?与opiatefuchs的问题类似。有解决方案吗?您的问题可能与一个bug有关,当前台服务不在单独的进程中运行时,前台服务仍可能受到doze模式的影响。看见