当设备进入睡眠状态时服务会发生啥

Posted

技术标签:

【中文标题】当设备进入睡眠状态时服务会发生啥【英文标题】:What Happens To A Service When Device Goes Into Sleep当设备进入睡眠状态时服务会发生什么 【发布时间】:2017-03-08 15:05:32 【问题描述】:

我正在为打算长时间运行的 android marshmallow 开发服务。我的问题是"

当设备进入深度睡眠时,我的服务会发生什么?

有什么方法可以控制系统暂停服务进入睡眠时发生的情况(比如活动的 onPause() 方法)?

我在 Google 上搜索了一个未成功的答案,但如果我的问题已经得到解答,我真的很抱歉浪费您的时间,如果您能指出正确的答案,我将不胜感激。

谢谢

【问题讨论】:

【参考方案1】:

当设备进入深度睡眠时,我的服务会发生什么?

如果您的服务正在运行,设备将不会进入深度睡眠。 Deep sleep only happens if the CPU has literally nothing to do,如果你的服务正在做事,情况就不是这样了。

有什么方法可以控制系统暂停服务进入睡眠时发生的情况

我不完全理解这个问题。服务不会进入休眠状态。它要么正在运行,要么没有。您可以控制生命周期(除了操作系统在需要释放内存时终止服务进程)。

【讨论】:

感谢您的回答。但是我的印象是(如果我错了,请纠正我)除非应用程序或服务使用了唤醒锁,否则系统将进入睡眠状态。大部分时间都在运行的谷歌服务就是证明。同样从我在互联网上阅读的内容来看,程序员经常抱怨他们的服务在设备休眠时出现故障,在这种情况下,建议程序员使用唤醒锁。我很好奇的是到底发生了什么。系统是终止服务还是暂停其线程? 唤醒锁会阻止 CPU 休眠,但有不同类型的休眠。你可以使用唤醒锁,但要确保只在需要时持有它,所以当你完成后,释放它并在再次需要时再次获取它 所以你的意思是系统永远不会进入深度睡眠,因为谷歌播放服务一直在运行?如果是这样,深度睡眠的目的是什么? 服务可以在不做实际工作的情况下运行。您可以启动一个服务,而不是让它做任何工作。它会运行,但不会做任何事情。也许“跑步”不是正确的术语,但我希望你明白我的意思 是的,我明白你的意思(例如,如果服务正在监听通知)。那么该应用会阻止深度睡眠吗?

以上是关于当设备进入睡眠状态时服务会发生啥的主要内容,如果未能解决你的问题,请参考以下文章

当我的 Mac 进入睡眠状态时,我的应用程序会发生啥?

使计算机进入睡眠状态是啥意思

ios空闲时间或使设备进入睡眠状态

让 iPhone 进入睡眠状态会隐藏 tableview 单元格 [重复]

睡眠 休眠 关闭硬盘 分别是啥意思?

电脑的休眠和睡眠有啥区别