谁能描述或指出我对“android 中的唤醒锁如何工作”的一个很好的描述?你可以忘记它的 Android 标准文档。
我有一个服务(作为前台启动),并且在服务中将启动一个自己的线程。线程保持循环,直到用户停止服务。在循环中,线程执行 HTTP 请求。从响应中,线程知道应该在什么延迟(1 分钟或更长)之后执行下一个 HTTP 请求。
当显示器打开时,HTTP 请求会在准确的预期时间到达服务器。但是当显示器关闭时,延迟是随机的。例如,在 1 分钟的情况下,实际上是 2:21、4:04、4:40,... 但是,我希望在显示关闭的情况下也有确切的时间(假设称为深度睡眠模式)。
所以我在HTTP请求wakelock.acquire()
之前和wakelock.release
之后引入了一个,但这并没有改变。
但它只给了我一般性问题:
wakelock.acquire()
当手机休眠时,我的代码怎么会醒来?如果我到达wakelock.acquire()
,那么我不需要它,或者......?
好的,然后我想,也许在深度睡眠中我的代码也被执行了,但是像 IP 流量这样的某些事情不是。但它应该工作。
从 logcat 日志中我可以看到wakelock.acquire()
没有及时调用。那么它的用途是什么?我无法wakelock.acquire()
在启动服务或其线程时执行,因为这意味着即使我只想在 30 分钟的时间范围内发出 HTTP 请求,我的服务也会阻止手机进入睡眠状态。
我宁愿不敢相信,和wakelock.acquire()
你一起只能做一辈子的服务,防止手机进入深度睡眠。