我知道前台服务“不太可能杀人”行为。根据Android文档:
理论上,服务可能会被杀死 来自当前前台应用程序的极端内存压力,但是 在实践中,这不应该是一个问题。
我认为这解决了大多数情况下的低内存问题。但我找不到任何关于CPU在前台服务运行时是否进入休眠状态的文档。
前台服务会自动获取 PARTIAL_WAKE_LOCK ,还是必须在需要时明确调用它?
有没有办法检查/记录哪些应用程序/服务正在使用PARTIAL_WAKE_LOCK?
答案 0 :(得分:2)
Android 前景服务和 PARTIAL_WAKE_LOCK 彼此无关。
前台服务 - >它告诉操作系统将您的服务放在最高优先级队列中。如果操作系统因任何原因需要内存,它将在最后一次终止服务,它将以最低优先级的队列开始(我相信有5个优先级队列,前景是最高的)。
PARTIAL_WAKE_LOCK - >它告诉操作系统在设备进入休眠状态时不要让CPU进入休眠状态(只要发生这种情况)。
因此,即使你有一个前台服务,如果设备进入休眠状态,cpu也可能会进入休眠状态(如果某个其他应用程序获得了PARTIAL_WAKE_LOCK,则可能没有)。 我认为有一种方法可以检查哪些应用程序以编程方式获取唤醒锁定,但您可以将设备插入DDMS,当有人获取wake_lock时您将看到PowerManager日志。
希望它有所帮助!