最佳实践:在后台获取位置更新

Best practices: Getting location updates in background

开发一个 android 应用程序,在后台更新用户的位置。现在,为此 Google 提供两种方式:

  1. 通过 getlastlocation() 函数获取用户最后的位置。可以设置警报管理器,并借助广播接收器和服务,可以不断更新位置。 For example:

  2. 从融合位置提供程序请求定期更新,如图所示here

哪种方式是在后台连续获取位置更新的最佳方式,而不会 Android 终止后台服务,除非用户这样做?

第二种方法"requesting periodic location updates"是有效。它允许您更具体地定制更新频率以及在什么情况下您将获得更新。您告诉 Android 如果用户移动超过 X 米,您希望如此频繁地更新 and/or。

第一种使用getLastLocation()的方法是被动。这意味着您无法控制更新的频率或质量。您基本上是在搭载其他应用程序的位置更新请求。如果有其他应用程序要求频繁更新,那么调用 getLastLocation() 会给你一个相对 recent/accurate 的位置。但是,如果其他应用程序不请求频繁更新(或者用户可能根本 运行 任何其他应用程序),对 getLastLocation() 的调用可能 return 非常陈旧(inaccurate/old) 数据。