我知道 android 使用唤醒锁来保持 cpu 运行或屏幕打开。
很明显,屏幕唤醒锁可以防止用户活动计时器在用户不活动一段时间后关闭屏幕。
但我想知道cpu唤醒锁到底什么时候生效。
1.如果我创建一个新线程并在没有任何唤醒锁的情况下在后台继续耗尽CPU,关闭屏幕将不会停止它。它会停止吗?什么时候停止?
2.用Timer.schedule()调度的线程怎么样?
3.这会导致另一个问题,如果我在服务中保持长套接字连接,该连接在socket.read()处被阻止。我是否必须获取唤醒锁以确保当套接字从远程接收到任何数据时服务将被唤醒?
Thanks.
所有子问题的答案
当没有唤醒锁处于活动状态时,Android 将进入睡眠状态。无论进程和线程正在运行什么,它仍然会休眠。这意味着如果您的线程或其他进程没有激活唤醒锁,您的线程将不会执行,因此不会耗尽任何电池。仅当其他进程获取唤醒锁时,该线程才会被激活。
同样适用于 Timer.schedule()。假设您编写了一个每秒执行一次但没有任何唤醒锁的计时器,并假设 Android 进入睡眠状态 10 秒。当它在第 11 秒唤醒 p 时,它将识别出您的计时器已过期 10 次,它将简单地丢弃 9 个实例并仅执行一次。如果您想要非常可靠的计时器,您将必须获得唤醒锁或使用 AlarmTimer。
Yes.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)