【问题标题】:GPS location and deep sleepGPS定位和深度睡眠
【发布时间】:2014-02-04 00:52:27
【问题描述】:

我有一个前台服务(使用 START_STICKY,因此“被操作系统杀死”的方面没有问题)每 2 秒接收一次位置 (GPS) 更新以进行导航。我不带任何唤醒锁。我的问题是:我是否需要使用唤醒锁来避免深度睡眠?还是位置更新足以“运行”?

【问题讨论】:

  • 通过接收器或监听器更新位置?
  • @Mr_and_Mrs_D 通过注册的lister

标签: android gps wakelock android-wake-lock


【解决方案1】:

在对 Android 代码进行了一些挖掘之后,得到的响应是:不,你不需要它。 Android 将为您获取唤醒锁 (LocationManagerService),直到 onLocationChange 结束或您的广播接收器接收到意图。如果你做一些异步工作(启动一个意图服务,在 onLocationChange 中发布一些代码等等),那么你需要创建你自己的部分唤醒锁。

【讨论】:

    【解决方案2】:

    我在一个应用程序中做同样的事情(但我使用接收器来接收我推荐的位置更新 - 有很多关于听众的错误报告)。你的方式有两个问题:

    1. 服务可能无论如何都会关闭
    2. 服务最终会进入休眠状态 - 我想知道您为什么没有注意到这一点

    正确的方法是向 AlarmManager 注册闹钟 - 闹钟会唤醒接收器。你必须从onReceive() 开始一个WakefulIntentService,它将为你管理锁。

    见:

    编辑:2 秒真的是非常频繁。这会耗尽电池 - 预计评级会非常低 - 或增加间隔。

    【讨论】:

    • 服务可能会关闭,但对我来说粘性行为没关系。从现在开始,我没有看到任何问题,也没有收到任何此类问题的报告。实际上,我使用的是单独的前台 HandlerThread,并且在注册位置侦听器时将此线程与 Thread.getLooper() 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 2014-08-07
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2013-04-30
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多