android – 前景服务和PARTIAL_WAKE_LOCK之间的关系

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

It is still theoretically possible for the service to be killed under
extreme memory pressure from the current foreground application, but
in practice this should not be a concern.

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

>前台服务是自动获取PARTIAL_WAKE_LOCK还是必须在必要时明确调用它?
>有没有办法检查/记录哪些应用程序/服务正在使用PARTIAL_WAKE_LOCK?

最佳答案 Android前台服务和PARTIAL_WAKE_LOCK彼此无关.

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

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

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

希望能帮助到你 !

点赞