使用fusedLocation API定期发送位置更新

时间:2015-04-27 17:26:59

标签: android location alarmmanager periodic-task fusedlocationproviderapi

Android编程对我来说是一个全新的事情,我一直在玩Android的位置,我有同样的问题,我将在后台发送定期位置更新服务器和我&# 39; m使用AlarmManager / LocationManager方法,使用定义的Interval设置alarmManager,然后当alarmReceiver被触发时,它将获得设备的当前位置(使用locationManager)并使用onReceive方法将其发送到服务器。我发现这个FusedLocation是一个很好的替代品,因为LocationManager给了我额外的工作来获得最好的位置提供者。是否可以使用fuseLocation api在没有alarmManager的情况下定期在后台执行发送位置更新?如果是的话,我该怎么做?提前谢谢!

1 个答案:

答案 0 :(得分:1)

根据LocationRequest documentation

  

在这两个极端之间是一个非常常见的用例,应用程序肯定希望以指定的时间间隔接收更新,并且可以在可用时更快地接收它们,但仍然需要低功耗影响。这些应用程序应考虑PRIORITY_BALANCED_POWER_ACCURACY结合更快的setFastestInterval(long)(例如1分钟)和更慢的setInterval(long)(例如60分钟)。只会为setInterval(long)设置的时间间隔为权限指定权限,但仍可以以最高setFastestInterval(long)的速率接收其他应用程序触发的位置。这种请求风格适用于许多位置感知应用程序,包括后台使用。如果您在收到更新后执行重量级工作(例如使用网络),请务必小心setFastestInterval(long)

这使您可以保证根据您使用setInterval(long)设置的时间间隔获取位置更新,为您提供与定期闹钟相同的行为,但如果其他应用请求位置信息,您可能会获得位置信息与setFastestInterval(long)一样频繁 - 如果您只想按设定的间隔更新位置,则可以将最快间隔设置为间隔。