安卓系统中是否有睡眠阶段/级别的概念?
从浏览邮件列表得知,存在一种名为"深度睡眠"的阶段。当设备进入此状态时,所有应用程序的执行是否会停止?如果是,则除了用户按下电源按钮外,还有什么可以唤醒设备?
从邮件列表中了解到,存在一种被称为“深度睡眠”的阶段。
实际上,并不存在一个专门称之为“深度睡眠”的阶段。只有“清醒”、“睡眠”和“关闭”这三个状态。
在设备进入此状态后,所有应用程序的执行是否都停止了?
当设备进入睡眠或关闭状态时,所有进程的执行都会停止。
如果是这样的话,除了用户按下电源按钮,还有什么其他方式可以唤醒设备?
AlarmManager
的闹钟以上是最常见的,还可能有其他方式。
(getSystemService(Context.POWER_SERVICE) as PowerManager).isDeviceIdleMode
对Commonsware的列表进行简短补充。在寻找一种在手机休眠时定期运行方法的方式后,我发现TimerTask
在睡眠模式下也可以正常工作。
根据我的经验,如果您只想从服务中运行方法而不是启动活动,则使用TimerTask
更容易操作。
TimerTask
“不会阻止设备进入睡眠状态,也不会唤醒设备。” - Giulio Piancastelli在@CommonsWare描述的三阶段框架中,如果设备的屏幕黑暗,则可能不被归类为“睡眠”,除非CPU也停止运行。但正如上面的段落所示,屏幕黑暗状态可以合法地称为“睡眠”。毫无疑问,这就是人们提到“深度睡眠”的原因,以澄清他们正在谈论CPU是否处于睡眠状态。 此文档页面也提到了这一点。为了避免耗尽电池,Android设备在空闲时会很快进入睡眠状态。但是,有时应用程序需要唤醒屏幕或CPU并保持其唤醒以完成一些工作。[强调添加]
附言:如果你想详尽一点,你可以把白日梦算在你的“睡眠阶段”列表中:
Daydream是Android 4.2版本后的新型交互式屏幕保护模式。当设备插入底座或者插上充电器后闲置时(而不是关闭屏幕),它会自动激活。
从之前运行的应用程序的角度来看,白日梦的行为就像切换到另一个应用程序一样。因此,这并不是设备进入睡眠状态的问题,虽然你的活动确实会停止,我想。