我正在使用在I / O 2013中引入的新位置API。
它工作正常,我的结果没有问题。我的问题是当我将setExpirationDuration(WHATEVER_MILLIS)
设置为毫无疑问时,它会工作一分钟。
这是我的代码:
LocationRequest locationRequest = LocationRequest.create()
.setInterval(10 * 60 * 1000) // every 10 minutes
.setExpirationDuration(10 * 1000) // After 10 seconds
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
当我运行应用程序时,卫星指示器将显示在托盘中,所以我希望它只需10秒钟。但是,它会在一分钟后消失。
任何建议或意见将不胜感激。谢谢。
答案 0 :(得分:1)
由于它似乎是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秒后您的位置更新被移除。
答案 1 :(得分:1)
它说: “持续时间立即开始(而不是在请求传递给位置客户端时),因此如果请求稍后重新使用,请再次调用此方法。”
在调用以下行时,可以预期此持续时间开始:
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);
但是,文档说明这个持续时间是在创建请求对象时开始的。