我有一个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分钟发出一次警报,然后将最近的位置发送回服务器,但我希望能够在回调中处理发送。
是否有其他人必须处理这种情况,或者知道如何解决这个问题?
答案 0 :(得分:0)
我不知道你在其余的代码中做了什么,但我认为你只需管理LocationRequest
和LocationClient
与{{1的生命周期方法有关的方法您正在调用它们或Activity
。
来自android开发人员博客的receiving location updates教程和this post就是很好的例子。
如果您在Fragment
或LocationClient
和onResume()
期间开启和关闭这些更新,您的应用必须与onCreate()
相关联才能收到更新,因此您只能有效地运行应用程序在前台时的计时器。然后,正如开发人员博客文章建议的那样,当您的应用程序在后台时,您可以切换到仍然可以接收更新的被动位置监听器,但不会使用相同的基于计时器的方法。当您的应用程序返回到前台时,您可以关闭被动侦听器,重新连接到onStop()
并再次启动5分钟计时器。