【问题标题】:How to do periodic Google Place API Calls?如何定期进行 Google Place API 调用?
【发布时间】:2017-09-29 05:51:34
【问题描述】:

我需要每 5 分钟发送一次用户当前所在的商家。我正在使用 Google Places 库,并且可以成功抓取商家。问题是这项服务需要 24/7 全天候运行。

到目前为止,我的解决方案是使用从我的主要活动中调用的服务。该服务将每 5 分钟订阅一次后台位置更新。一旦位置更新通过,它将向 Google Place 库询问用户当前所在的企业。我正在使用 Google Play 服务订阅这些位置更新。我读到不建议将警报用于此类事情,这就是为什么我订阅位置更新以给我一个伪 setTimeout(5mins) 行为。实际上我什至没有使用返回的 GPS,只是用于询问 GooglePlaces 的函数回调。

问题是这项服务难以置信地不可靠。我正在运行安装了 11.2.0 播放服务的 Android 8.0。服务的 OnDestroy 会在几分钟内被调用,并且即使我从服务 OnStartCommand 返回 Start_sticky 也不会重新启动。服务应该这么快就被杀死吗?我没有打开其他应用程序,该服务有 99% 的时间处于空闲状态,等待位置滴答声通过。

有没有更好的方法来做到这一点?我真正需要的是每 5 分钟调用一次的函数,这样我就可以询问用户所在的 Google Place。它甚至不必与位置相关。唯一的要求是它即使在应用关闭时也能运行。

【问题讨论】:

  • 如果您的应用程序进入后台,您的服务将在 Android 8 中立即终止。您需要运行前台服务来完成您想要做的事情。但是,您为什么要在用户不使用应用时尝试获取地点信息?
  • 我不能说太多细节,但目的是根据人们去哪里向他们推荐企业。
  • 为什么不存储积分,并使用JobScheduler 批量调用 Google 地方信息?这样一来,您每 5 分钟拨打一次网络电话和获取一次 GPS 就不会消耗太多电量。
  • 从技术上讲,我什至不需要 GPS 点。我正在拨打的地方电话不使用任何 GPS 参数。它在这里使用这个调用:developers.google.com/places/android-api/current-place
  • 我只需要一种可靠的方式来每隔几分钟打一次电话。下面的用户建议使用 AlarmManager,但不知道效果如何。

标签: android service gps google-places


【解决方案1】:

尝试将 AlarmManager 与服务一起使用...尝试一次,也许它会解决您的问题。 谢谢!!!

【讨论】:

    【解决方案2】:

    我的解决方案是使用从我的 Activity 开始的 AlarmManager。无需服务。

    【讨论】:

      猜你喜欢
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多