gpt4 book ai didi

java - 试图了解我是否需要 WakeLock

转载 作者:太空狗 更新时间:2023-10-29 14:26:46 27 4
gpt4 key购买 nike

免责声明:我的应用已经在没有任何唤醒锁的情况下运行了 1 年多,并且对于大多数设备来说一切都很好。

我正在跟踪 GPS,它的工作原理如下:

  1. AlarmReceiver 每 5/10/15 分钟启动一次服务(根据用户意愿)
  2. 服务订阅位置更新并等待 MAX 1 分钟以获得良好的 GPS。
  3. 结束,向服务器发送数据并关闭服务。

由于网络连接和位置不佳 - 有时整个过程最多需要 2-3 分钟。它有效。无论手机是否处于 sleep 状态。

现在我正在阅读有关 WakeLock 的内容,但它对我来说没有意义。我的东西怎么能用?这是巧合吗?

最佳答案

How come my stuff is working?

多种因素的结合,包括一点运气。 :-)

首先,正如 Joel 指出的那样,设备会因您的闹钟而短暂唤醒,但操作系统只能保证在 onReceive() 期间保持 WakeLock BroadcastReceiver 的。

至少在某些版本的 Android 上,请求 GPS 更新可能会导致操作系统获取自己的 WakeLock。这是无证行为 AFAIK,我个人从未依赖过它。但是,如果确实如此,并且您在删除位置更新之前完成了剩余的工作(“结束,将数据发送到服务器并关闭服务”),则可以解释该行为。

您的方法中仍然存在潜在的差距(例如,如果您委托(delegate) Service 来完成工作并且没有持有 WakeLock 作为将控制权传递给的一部分该服务)。从统计上讲,它可能偶尔会失败,但在很多时候都有效。

就个人而言,我建议使用 WakeLock,以防未记录的行为发生变化。 That's what I do in LocationPoller .

关于java - 试图了解我是否需要 WakeLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11679259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com