根据Android文档,当系统处于打瞌睡模式时,任何唤醒都会被忽略。然而,我还不清楚唤醒是否能阻止打瞌睡模式。
发布于 2015-08-29 21:32:42
基于一些测试,使用Nexus 5与最终(?)安装的Android6.0预览:
PARTIAL_WAKE_LOCK不足以阻止doze模式--设备仍然会打瞌睡,即使您有WakeLock并且正在尝试做正常的工作(例如,setExactAndAllowWhileIdle()每分钟都要控制)android:keepScreenOn (或与Java等效的),并打开屏幕,就足以阻止Doze模式。android:keepScreenOn (或Java等效)不足以阻止Doze模式。IOW、视频播放器等在用户观看视频时不应受到影响,即使播放机可能没有移动或充电。但是,如果用户按下电源按钮,您将重新陷入Doze风险。
我没有尝试使用FULL_WAKE_LOCK (我希望行为与android:keepScreenOn相同,但我还远不确定)。
发布于 2015-10-17 14:34:17
有趣的
谷歌自己在Android6.0中的时钟应用程序能够完全屏蔽Doze模式:
这个国家仍然是“踏进:积极的”
如果从现在起设置一个时间> 60分钟的警报,它将正常工作(设备可能处于空闲状态)。但是,一旦警报< 60分钟,当状态再次返回'ACTIVE‘(而不是'IDLE_MAINTENANCE')时,设备似乎从Doze空闲中悄悄地醒来。
我真想知道他们是怎么做到的!
-编辑-
默认情况下,具有这种行为的似乎是setAlarmClock()。这可能对某些用例有帮助。
发布于 2015-09-11 11:04:57
作为对上述意见讨论的回应,这不是问题的答案。这是为了澄清应用在Doze模式下的一般行为。在我的测试应用程序中,我尝试每2分钟获得一个GPS位置,GPS信号强度在任何时候都足够。
测试条件:
用于Doze模式的GPS测试日志:
1 2015-09-04 - 12:14 GPS ok (device left stationary unplugged)
2 2015-09-04 - 12:16 GPS ok
3 2015-09-04 - 12:18 GPS ok
4 2015-09-04 - 12:20 GPS ok
5 2015-09-04 - 12:22 GPS ok
6 2015-09-04 - 12:24 GPS ok
7 2015-09-04 - 12:26 GPS ok
8 2015-09-04 - 12:28 GPS ok
9 2015-09-04 - 12:30 GPS ok
10 2015-09-04 - 12:32 GPS ok
11 2015-09-04 - 12:34 GPS ok
...
31 2015-09-04 - 13:14 GPS ok
32 2015-09-04 - 13:16 GPS ok
33 2015-09-04 - 13:18 GPS ok
34 2015-09-04 - 13:20 GPS ok
35 2015-09-04 - 13:22 GPS ok
36 2015-09-04 - 13:24 GPS ok
37 2015-09-04 - 13:26 GPS ok (entering Doze mode some time after)
38 2015-09-04 - 13:42 GPS failed, active millis: 60174 (idle)
39 2015-09-04 - 13:57 GPS failed, active millis: 60128 (idle)
40 2015-09-04 - 14:12 GPS failed, active millis: 60122 (idle)
41 2015-09-04 - 14:16 GPS ok (idle maintenance)
42 2015-09-04 - 14:18 GPS ok (idle maintenance)
43 2015-09-04 - 14:20 GPS ok (idle maintenance)
44 2015-09-04 - 14:22 GPS ok (idle maintenance)
45 2015-09-04 - 14:38 GPS failed, active millis: 60143 (idle)
46 2015-09-04 - 14:53 GPS failed, active millis: 60122 (idle)
47 2015-09-04 - 15:08 GPS failed, active millis: 60068 (idle)
48 2015-09-04 - 15:23 GPS failed, active millis: 60138 (idle)
49 2015-09-04 - 15:38 GPS failed, active millis: 60140 (idle)
50 2015-09-04 - 15:53 GPS failed, active millis: 60131 (idle)
51 2015-09-04 - 16:08 GPS failed, active millis: 60185 (idle)
52 2015-09-04 - 16:12 GPS ok (ending Doze mode - power button on)现在我再次查看了我的日志,我注意到了一个非常奇怪的行为:“忽略优化”OFF的相同测试显示了基本相同的结果(就像它应该的那样),但是大多数情况下超时并不像预期的那样工作,所以我得到了“活动millis”的范围,或者是330000(5倍超时时间),甚至是580000次(超时时间为10次)。这个奇怪的行为我无法解释,但它似乎表明,实际上有一些影响的设置“忽略优化”的Doze模式。
编辑:上面描述的‘奇怪’行为现在是记录在案:只有在“忽略优化”打开的情况下,您可以在Doze空闲模式下保持部分唤醒。
https://stackoverflow.com/questions/32286797
复制相似问题