5

我一直在努力更新我正在开发的应用程序以使用新的 FusedLocationProviderClient 并在应用程序未使用时请求后台位置更新。我最近还更新了这个应用程序以针对 sdk 27​​,但是我无法保持我以前使用的服务活着来检查这些位置更新。

总结一下我想要完成的工作,这个应用程序允许用户保存来自不同商家的多个优惠。这些商家中的每一个都可以在全国拥有多个位置,并且该应用程序允许用户在他们保存的商家之一附近时收到通知。该应用程序为用户当前位置一定半径内的所有已保存商家位置设置地理围栏,但如果用户大幅移动以丢弃旧地理围栏并为更靠近更新位置的商家位置创建新地理围栏,该应用程序需要接收位置更新。

在切换到目标 sdk 27​​ 并使用 FusedLocationProviderClient 之前,该应用程序使用 LocationServices FusedLocationProviderApi 在粘性后台​​服务中请求位置更新,该服务在用户在其应用程序中启用基于位置的提醒时启动。这个想法是让该服务在后台连续运行,并在使用 FusedLocationProviderApi 指定的位置更新设置触发服务侦听器中的 onLocationChanged 事件时重新绘制地理围栏。

使用新的 SDK,一旦应用程序被认为处于“空闲”状态,后台服务就会停止。拥有定期接收位置更新的后台服务(即不必向用户显示前台消息/通知的服务)的最佳做法/建议是什么?有没有办法使用 FusedLocationProviderClient 的 requestLocationUpdates 方法来完成此操作,或者使用带有 FusedLocationProviderClient 的 getLastLocation 回调的周期性 FirebaseJobDispatcher 来更新地理围栏会更好吗?还有其他解决方案吗?

4

0 回答 0