Android,位置请求,设置到期时间不起作用

我正在使用在I / O 2013中引入的新的位置API。

它工作正常,我的结果没有问题。 我的问题是当我将setExpirationDuration(WHATEVER_MILLIS)设置为任何millis然而它工作一分钟。

这是我的代码:

 LocationRequest locationRequest = LocationRequest.create() .setInterval(10 * 60 * 1000) // every 10 minutes .setExpirationDuration(10 * 1000) // After 10 seconds .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 

当我运行应用程序时,卫星指示器将显示在托盘中,所以我希望看到它只需10秒钟。 但是,它会在一分钟后消失。

任何建议或意见将不胜感激。 谢谢。

由于它似乎是Android中的一个真正问题,因此解决方法可能是手动删除位置更新的处理程序。

  listHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0) { mLocationClient.removeLocationUpdates(MyActivity.this); //Location Updates are now removed } super.handleMessage(msg); } }; 

在您请求位置更新(最长持续时间为10秒)后,您可以调用此处理程序,当然会延迟10秒。

 myLocationClient.requestLocationUpdates(...); listHandler.sendEmptyMessageDelayed(0, 10000); 

这可以确保在10秒后您的位置更新被删除。

在文档中( https://developer.android.com/reference/com/google/android/gms/location/LocationRequest.html#setExpirationDuration(long)

它说: “持续时间立即开始(而不是在请求传递给位置客户端时),因此如果请求在以后重新使用,则再次调用此方法。”

人们会期望在调用以下行时开始此持续时间:

 LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this); 

但是,文档说明此持续时间在创建请求对象时开始。