我尝试一次检索用户的位置,然后从位置服务断开连接()以避免电池使用。问题是,即使在我断开连接后,我也会在状态区域中看到位置箭头图标 - 即使在客户端上调用断开连接后,回调 onDisconnected() 也永远不会被调用。
这就是我正在做的:
在 onResume()
我连接:
mLocationClient = new LocationClient(this, this, this);
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(LOCATION_UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(1);
mLocationClient.connect();
在 onConnected()
中,我尝试获取 laSTLocation,如果它不为空,我将获取它并断开与位置服务的连接。如果它为空,我开始监听更新:
if (mLocationClient.getLastLocation() != null) {
userLocation = mLocationClient.getLastLocation();
stopLocationServices();
// do something which requires location
} else {
mLocationClient.requestLocationUpdates(mLocationRequest, this);
}
在onLocationChanged
userLocation = mLocationClient.getLastLocation();
stopLocationServices();
// do something which requires location
我的 stopLocationServices()
函数如下所示:
private void stopLocationServices() {
if (mLocationClient != null) {
try {
mLocationClient.removeLocationUpdates(this);
mLocationClient.disconnect();
} catch (Exception e) {}
}
mLocationClient = null;
}
感谢您的帮助。
最佳答案
如果 getLastLocation() 不返回 null 并且 stopLocationServices() 被顺序调用,那么您将尝试在 mLocationClient 上执行 removeLocationUpdates() 而不是首先请求它们,这可能会抛出异常并且可能是 onDisconnected( ) 永远不会被调用。
关于android - 一旦我调用 client.disconnect,位置图标就不会消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24318680/