我一直在努力更新我正在努力使用新的FusedLocationProviderClient并在应用未使用时请求后台位置更新的应用。我最近也更新了这个应用程序以定位sdk 27,但是我无法保留以前用过的服务来检查这些位置更新。
总结一下我要完成的工作,这个应用程序允许用户保存来自不同商家的多个优惠。这些商家中的每一个可以在全国范围内具有多个位置,并且该应用允许用户在他们已经保存的商家附近时被通知。该应用程序为用户当前位置的特定半径内的所有已保存商家位置设置地理围栏,但如果用户显着移动以丢弃旧地理围栏并为更新位置附近的商家位置创建新地理位置,则应用需要接收位置更新。
在切换到目标sdk 27并使用FusedLocationProviderClient之前,应用程序正在使用LocationServices FusedLocationProviderApi在用户在其应用中启用基于位置的提醒时启动的粘性后台服务中请求位置更新。我们的想法是,只要使用FusedLocationProviderApi指定的位置更新设置触发了服务侦听器中的onLocationChanged事件,就可以在后台连续运行此服务并重新绘制地理围栏。
使用新的SDK,只要应用程序被认为处于“空闲”状态,后台服务就会停止。具有后台服务(即,不必向用户显示前台消息/通知的服务)定期接收位置更新的最佳实践/建议是什么?有没有办法用FusedLocationProviderClient的requestLocationUpdates方法来实现这一点,或者使用具有FusedLocationProviderClient的getLastLocation回调的定期FirebaseJobDispatcher更新地理围栏会更好吗?还有其他解决方案吗?