使用FusedLocationProviderApi启动定期位置更新或使用AlarmManager

时间:2016-12-16 11:04:03

标签: android google-play-services fusedlocationproviderapi android-fusedlocation

我正在开发一款应用程序,每隔3小时根据当前位置检查天气。我正在使用FusedLocationProviderApi并使用pendingIntent来获取启动IntentService的BroadCastReceiver。

在FusedLocationProviderApi中,您可以在创建LocationRequest时指定间隔时间段。因此,如果我将间隔指定为3小时,将最快间隔指定为3小时(我不希望在此之前获得更新),如果在进行位置更新时位置不可用会发生什么?

我是否仍会在预定时间获得位置更新意图?如果位置不可用,我想使用最后一个已知位置,但我需要确定我仍然在预定时间获得PendingIntent。

或者最好使用警报管理器来处理定期工作并从IntentService中请求位置更新吗?

由于

1 个答案:

答案 0 :(得分:0)

在FusedLocationProviderApi中,您可以在创建LocationRequest时指定间隔时间段。因此,如果我将间隔指定为3小时,将最快间隔指定为3小时(我不希望在此之前获得更新),如果位置不可用,则会发生什么情况进行位置更新?

在这个scnerio设备必须清醒,以保持您的位置请求。所以这意味着你必须有一个不间断的(理论上)后台服务,以及部分唤醒锁定。听起来不太好。

相反,您可以参考AlarmManager方法,该方法设置为每3小时唤醒一次。然后想法就像下面的

  • 设备唤醒
  • 使位置请求尽快(将间隔值设置为零)
  • 收到位置后(继续做实际工作)继续睡觉