当设备的液晶显示屏关闭时,服务或处理程序是否会进入睡眠状态?

时间:2015-07-29 05:42:39

标签: android android-activity android-service android-handler

我想开发一个睡眠跟踪应用程序,即使设备的屏幕下降也应该可以正常工作。我很好奇当设备屏幕关闭时ServiceHandler是否会进入睡眠状态。我学习了活动的生命周期,所以我认为Handler不起作用,因为当设备的屏幕关闭时活动进入睡眠状态,Handlers依赖于它的活动。但是Service是一个后台进程,所以我认为它可能有效。

所以即使设备的屏幕关闭,我也希望设备处于活动状态。你能给我一些建议吗?

3 个答案:

答案 0 :(得分:2)

如果设备屏幕被锁定,您的应用程序将暂停一段时间。 CPU会一直睡到用户唤醒设备,因此,Service在设备休眠时不会做任何事情。

如果您想要在屏幕关闭时执行某些操作,您可以获得WakeLockhttp://developer.android.com/reference/android/os/PowerManager.WakeLock.html 但要小心,使用WakeLock太多会快速耗尽电池。

此外,另一个可能对您有用的课程是WakefulBroadcastReceiverhttps://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

它的作用是,它会收到一些Intent并为您获取WakeLock,以便您可以Service完成工作。如果没有这个,你无法保证设备能完成工作而不能入睡。

答案 1 :(得分:0)

屏幕关闭时服务暂停。这样做是为了防止电池耗尽。
在您的情况下,由于您希望服务运行更长时间,因此可以考虑使用PowerManager.WakeLock
这是{{3} }。

但是你应该记住,使用WakeLocks可能会在很大程度上影响设备的备用电池。

答案 2 :(得分:0)

  

服务或处理程序是否会在设备的lcd关闭时进入休眠状态?

不,您的服务将一直运行到后台,直到用户强行停止该服务。

如果您希望自己的服务一直存在,那么您需要将START_STICKY返回onStartCommand()