打瞌睡模式如何影响 background/foreground 服务、with/without partial/full 唤醒锁?

How does doze mode affect background/foreground services, with/without partial/full wakelocks?

这是一个简单的问题,看到 G+ (here), and lack of information on official docs (here ) 上有大量关于此的 post:

当设备进入 "doze" 模式时,应用程序的服务会发生什么情况?

它对 background/foreground 服务(bound/unbound、started/not-started)、with/without partial/full 唤醒锁有什么作用?

例如,为了创建在设备屏幕关闭时播放音频流的服务,您会怎么做?如果音频流不是来自本地文件,而是来自网络怎么办?

看到 Google 开发商提出了索赔:

Apps that have been running foreground services (with the associated notification) are not restricted by doze.

-但在那之后进行了很多讨论,声称这不完全正确,我认为知道特殊的后台操作应用程序应该做什么是相当混乱的。

具有当前 运行 前台服务的进程应该不受 Doze 影响。 Bound/unbound、started/not-started 和唤醒锁不会影响此白名单过程。

但是,an issue 在 Android M 设备上,当前台服务与顶级 activity 在同一进程中并且不正确地打瞌睡时,前台服务未正确列入白名单.

此修复程序可用 on AOSP 并将包含在 Android N 的构建中。原始设备制造商可以将该补丁集成到他们生产的任何 Android M 构建中。