唤醒锁是可交换的吗?

Is wake lock commutative?

假设一个 Android 应用程序获取唤醒锁,然后通过向另一个应用程序发送显式意图来启动另一个应用程序。当其他应用程序在前台时,获取唤醒锁的效果是否持续?

Keeping the Device Awake 中所述,后台应用程序获取并保持 CPU 唤醒锁是非常自然的:

One legitimate case for using a wake lock might be a background service that needs to grab a wake lock to keep the CPU running to do work while the screen is off. Again, though, this practice should be minimized because of its impact on battery life.

这个动作很常见。例如,想象一个音乐播放应用程序。即使屏幕已关闭,或其他 activity 在前台,后台应用程序保持唤醒锁定以继续播放音乐也是可以的。

虽然最后一行确实应该引起警告。正如 Wakelocks and Battery Drain 中所述,这些东西往往会很快耗尽电池;更糟糕的是,没有正确释放它们是一个非常普遍的问题,最终使设备进入不眠模式,永远不会进入睡眠状态。