4

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

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

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

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

  2. 有什么方法可以检查/记录哪些应用程序/服务正在使用 PARTIAL_WAKE_LOCK?

4

1 回答 1

2

Android前台服务和PARTIAL_WAKE_LOCK没有任何关系。

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

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

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

希望能帮助到你 !

于 2012-11-15T00:48:34.233 回答