在O设备上运行的应用程序处理后台位置限制的好策略是什么?

时间:2017-05-04 19:43:22

标签: android android-location fusedlocationproviderapi android-fusedlocation

鉴于在O设备上运行的Android应用程序上的位置收集受到限制,对于需要更频繁更新位置的开发人员来说,有哪些好的选择?

我意识到O仍然在开发人员预览中,但是在后台如何收集位置方面有重大变化,我想提前预测应用程序中可能需要的更改。

2 个答案:

答案 0 :(得分:1)

请求位于不在前台的位置更新的应用程序在O设备上运行时会受到一些限制。位置更新仍然在后台可用,但它们的发生频率可能​​低于LocationRequest#setInterval中指定的时间间隔。开发人员可以使用以下选项来更频繁地进行位置更新:

  1. 请求前台更新。这意味着在活动生命周期中请求和删除更新(例如onResume()中的请求和onPause()中的删除)。在前台运行的应用程序不受O设备的任何位置限制。

  2. 使用foreground service请求更新。这涉及向用户显示持久通知。

  3. 使用地理围栏根据设备的位置触发通知。如果您的用例依赖于设备进入,居住或退出感兴趣的特定区域,则此API提供了一种获得这些通知的高效方法。请参阅GeofencingEvent#getTriggeringLocation [,它会获取触发地理围栏转换的位置。

  4. 使用LocationRequest#setMaxWaitTime使用批量位置更新。使用此API,可以比非批处理API更频繁地提供位置,但是,在setMaxWaitTime中指定的间隔(也限制为每小时几次)之后,将按批次提供位置 使用被动位置更新:当您的应用处于后台时,如果前台中的其他应用请求位置更新,则可能会继续被动地接收位置更新。您可以使用LocationRequest#setFastestInterval以较短的间隔(例如5分钟)接收部分更新。

答案 1 :(得分:0)

鉴于这是一个关于如何处理Android O后台位置限制的大范围问题,这可能是相关的:

如果您的应用需要在后台接收位置主要用作相关输入,Awareness API可能对您有用。

Geofence是一个示例,当您希望在设备移动X英里时收到通知(并且您并不真正关心实际的位置坐标)。同样,如果您需要在服务器上获取与位置相关的数据或触发与位置相关的通知之类的位置,Awareness会提供大量有用的API。

例如,weather snapshot API可让您在设备位置获取天气,而无需请求位置。 TimeFence包含用于在设备位置根据时区或日出/设置等瞬间唤醒应用的API。