【问题标题】:Android background service location updates and DozeAndroid后台服务位置更新和Doze
【发布时间】:2018-03-23 00:21:44
【问题描述】:

我的应用可让人们在开车时记录路线。为了确保实际记录位置,我使用service 以便即使活动被终止也会记录它们。为了避免设备进入打盹状态,这意味着不会频繁更新位置,我设置了唤醒锁。

这些步骤是否足够?或者我是否需要明确禁用电池优化 (https://developer.android.com/training/monitoring-device-state/doze-standby.html) 以确保我不会丢失位置更新?根据文档,我的应用似乎是一个“可接受的”用例。

【问题讨论】:

  • 如果你是前台服务,doze 不适用。
  • @ianhanniballake 只是为了确保我理解正确,这意味着前台服务可以持有 FusedLocationClient 并继续接收位置更新?如果是这样,请添加您的评论作为答案,我会接受它:)

标签: android android-service android-service-binding android-doze android-doze-and-standby


【解决方案1】:

前台服务不受打瞌睡的影响 - 如果您想不断运行并获得高精度位置,您应该是前台服务。

【讨论】:

  • 我的前台服务在大约 30 分钟后被终止。似乎 stackoverflow 上的其他人也有类似的问题 (stackoverflow.com/questions/6645193/…)。有什么建议吗?
  • @user1202032 是的,在幕后工作有点难以理解,但前台服务通常会存活更长时间,因为这就是我们首先拥有前台服务的原因。要记住的另一个关键方面是return Service.START_STICKYonStartCommeand() 函数中的区别。文档告诉我们,如果该服务的进程被杀死,使用它将重新创建该服务。
  • @WahibUlHaq 你这么认为吗?我认为它实际上很容易理解。前台服务不应该被杀死 - 例如三星设备确实如此,但对于 OnePlus 而言并非如此。与START_STICKY 相同 - 它应该在可能的情况下重新启动您的服务,这发生在例如三星,但不在 OnePlus 设备上。文档很清楚,但是当一些 OEM 决定做其他事情时它不是很有用。老实说,谷歌让这些设备通过他们的合规计划是一个笑话
  • 这里提到,位置不会在打盹模式下传递,这是按设计的。 issuetracker.google.com/issues/63937937
  • @Henry - 在打瞌睡中,根据定义,该设备是不动的。根据最初的问题,当有人开车时,设备不会进入深度打瞌睡状态。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多