【问题标题】:Android Gps Tracker not getting timely updatesAndroid Gps Tracker 没有及时更新
【发布时间】:2017-08-23 23:50:21
【问题描述】:

我有一个开源 gps 跟踪应用程序,已经存在多年。最近,我收到抱怨说,在 android nougat 中,当手机拔下电源时,人们每 五分钟从手机获取一次更新,而不是每分钟一次更新.

即使我们尝试将其关闭,节电模式仍然存在问题。

有没有办法强制手机在拔掉电源时在指定时间获取 gps 更新?

这是代码,如果有人想看的话,但我不认为这是代码的问题。多年来一直非常稳定。

https://github.com/nickfox/GpsTracker/blob/master/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java

谢谢。

【问题讨论】:

    标签: android gps android-gps


    【解决方案1】:

    Android 7/Nougat 的一个变化是 Doze 现在“更具侵略性”。在 Android 6/Marshmallow 中,当屏幕关闭、设备依靠电池运行且处于静止状态时,打盹模式会启动。

    (这在Optimizing for Doze and App Standby中有记录)

    现在在 Android 7 中,条件只是屏幕关闭并依靠电池运行。

    (这在Android 7.0 Behavior Changes中有记录)

    如果应用程序破坏了其核心功能,则可以将其列入白名单以免除限制。在您的情况下,他们这样做是因为 GPS 跟踪器需要实时记录坐标。

    Acceptable Use Cases for Whitelisting的列表

    这包括:

    任务自动化应用程序 | App的核心功能是自动调度 操作,例如即时消息、语音通话、新照片 管理,或位置操作

    用户可以在设备设置中自行手动将应用列入白名单,也可以由应用请求加入白名单并由用户批准或拒绝。

    Support for Other Use Cases 对此进行了介绍

    引用:

    • 应用可以触发 ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS Intent 将用户直接带到电池优化,在那里他们可以 添加应用。

    • 拥有 REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 权限的应用可以 触发系统对话框,让用户将应用添加到白名单 直接,不用去设置。该应用程序触发 ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 意图触发 对话框。

    • 用户可以根据需要手动将应用从白名单中移除。

    最后一点当然很重要,但幸运的是可以通过编程方式检查白名单状态:

    应用可以通过以下方式检查其当前是否在豁免白名单中 调用 isIgnoringBatteryOptimizations()。

    因此,处理打瞌睡模式至少是一回事。

    另一个问题是保持服务正常运行。但是服务被系统杀死可能会导致更多的随机时间间隔。当然还有using START_STICKYrunning as a foreground service这样的经典。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 2014-08-06
    相关资源
    最近更新 更多