Android Gps Tracker未及时更新

时间:2017-03-30 07:33:42

标签: android gps android-gps

我有一个开源gps跟踪应用程序已经存在很多年了。最近,我收到投诉,在Android牛轧糖,而不是每分钟更新一次,当电话拔掉电话时,人们每隔<5分钟就会通过手机获取更新

即使我们尝试将其关闭,节电模式也会发生一些变化。

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

以下是代码,如果有人想看到它,但我不认为这是代码的问题。多年来它一直很稳定。

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

感谢。

1 个答案:

答案 0 :(得分:1)

Android 7 / Nougat的一个变化是Doze现在“更具侵略性”。在Android 6 / Marshmallow中,当屏幕关闭时,打盹模式启动,设备使用电池运行并且静止不动。

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

enter image description here

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

(这在Android 7.0 Behavior Changes中记录)

enter image description here

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

有一个Acceptable Use Cases for Whitelisting

列表

这包括:

  

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

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

Support for Other Use Cases

中介绍了这一点

引用:

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

  •   
  • 持有REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限的应用可以   触发系统对话框,让用户将应用程序添加到白名单   直接,无需进行设置。该应用程序触发了一个   ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS意图触发   对话框。

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

  •   

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

  

应用可以检查当前是否在免除白名单中   调用isIgnoringBatteryOptimizations()。

因此,处理打盹模式至少要研究一件事。

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