前台服务与PARTIAL_WAKE_LOCK之间的关系

时间:2012-04-09 16:51:19

标签: android service power-management

我知道前台服务“不太可能杀人”行为。根据Android文档:

  

理论上,服务可能会被杀死   来自当前前台应用程序的极端内存压力,但是   在实践中,这不应该是一个问题。

我认为这解决了大多数情况下的低内存问题。但我找不到任何关于CPU在前台服务运行时是否进入休眠状态的文档。

  1. 前台服务会自动获取 PARTIAL_WAKE_LOCK ,还是必须在需要时明确调用它?

  2. 有没有办法检查/记录哪些应用程序/服务正在使用PARTIAL_WAKE_LOCK?

1 个答案:

答案 0 :(得分:2)

Android 前景服务和 PARTIAL_WAKE_LOCK 彼此无关。

前台服务 - >它告诉操作系统将您的服务放在最高优先级队列中。如果操作系统因任何原因需要内存,它将在最后一次终止服务,它将以最低优先级的队列开始(我相信有5个优先级队列,前景是最高的)。

PARTIAL_WAKE_LOCK - >它告诉操作系统在设备进入休眠状态时不要让CPU进入休眠状态(只要发生这种情况)。

因此,即使你有一个前台服务,如果设备进入休眠状态,cpu也可能会进入休眠状态(如果某个其他应用程序获得了PARTIAL_WAKE_LOCK,则可能没有)。 我认为有一种方法可以检查哪些应用程序以编程方式获取唤醒锁定,但您可以将设备插入DDMS,当有人获取wake_lock时您将看到PowerManager日志。

希望它有所帮助!