如何正确停止FusedLocationProviderClient?
我在Service
内使用FusedLocationProviderClient
。
我想以正确的方式“停止”它。如何正确停止FusedLocationProviderClient?
使用下面的代码很好吗?
@Override public void onDestroy() {
super.onDestroy();
// Stop Looper of FusedLocationProviderClient
if (locationClient != null) {
locationClient = null;
}
}
而其余的代码
FusedLocationProviderClient locationClient; protected void startLocationUpdates() {
// Create the location request to start receiving updates
mLocationRequest = new LocationRequest();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
// Create LocationSettingsRequest object using location request
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
builder.addLocationRequest(mLocationRequest);
LocationSettingsRequest locationSettingsRequest = builder.build();
// Check whether location settings are satisfied
// https://developers.google.com/android/reference/com/google/android/gms/location/SettingsClient
SettingsClient settingsClient = LocationServices.getSettingsClient(this);
settingsClient.checkLocationSettings(locationSettingsRequest);
// new Google API SDK v11 uses getFusedLocationProviderClient(this)
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
locationClient = getFusedLocationProviderClient(this);getFusedLocationProviderClient(this).requestLocationUpdates(mLocationRequest, new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
// do work here
onLocationChanged(locationResult.getLastLocation());
}
}, Looper.myLooper());
}
回答:
只是调用的onDestroy
removeLocationUpdates为requestLocationUpdates,它说:
此调用将保持谷歌Play服务的连接活动,所以请确保在不再需要时调用removeLocationUpdates(LocationCallback),否则您失去了自动连接管理的好处。
回答:
只是改变onDestroy();
这样:
@Override protected void onDestroy() {
super.onDestroy();
if(locationclient!=null)
locationclient.disconnect();
}
以上是 如何正确停止FusedLocationProviderClient? 的全部内容, 来源链接: utcz.com/qa/261692.html