3

我有一个 android 应用程序需要确定其当前位置(使用 Google Play 服务 LocationClient),然后将该位置发送回服务器。这需要在后台定期发生,例如每 5 分钟

此代码运行良好,它通常每 5 分钟在几秒钟的容限内提供一次位置。当android无法修复时会出现问题。在这些情况下,我希望回调在 5 分钟后使用 NULL 位置对象运行,但是这不会发生。应用程序只是继续寻找位置而不调用回调。

我使用如下创建的 locationRequest 对象调用 LocationClient 的 requestLocationUpdates 方法

locationrequest = LocationRequest.create();
locationrequest.setInterval(5 * 60 * 1000);  
locationrequest.setFastestInterval(3 * 60 * 1000);
locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationrequest.setExpirationDuration(45 *1000);
locationclient.requestLocationUpdates(locationrequest, mPendingIntent);

我看不到让 LocationClient 每 5 分钟呼叫我一次的合适方法,即使它无法获取位置也是如此。我很感激我可以每 5 分钟发出一次警报,然后将最近的位置发送回服务器,但我希望在回调中处理发送。

有没有其他人不得不处理这种情况,或者知道如何解决它?

4

1 回答 1

0

我不知道你在其余代码中做了什么,但我认为你只需要管理你的LocationRequestLocationClient与生命周期方法相关的Activity或者Fragment你从中调用它们的方法。

接收位置更新教程以及来自 android 开发者博客的这篇文章就是很好的例子。

因为如果您在say或LocationClient期间打开和关闭这些更新,您的应用必须连接到接收更新,并且您有效地仅在您的应用处于前台时运行计时器。然后,正如开发人员博客文章所建议的那样,当您的应用程序处于后台时,您可以切换到被动位置侦听器,该侦听器仍然可以接收更新,但不会使用基于相同计时器的方法。当您的应用程序回到前台时,您可以关闭被动侦听器,重新连接并再次启动您的 5 分钟计时器。 onResume()onCreate()onStop()Google Play Services

于 2013-08-30T14:38:18.487 回答