Android 使用FusedLocation停止位置更新
如何停止FusedLocation侦听器进行更新? 我是这样设置的:Android 使用FusedLocation停止位置更新,android,Android,如何停止FusedLocation侦听器进行更新? 我是这样设置的: mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity()); LocationRequest mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(10000); mLocationRequest.
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity());
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000);
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationCallback = new LocationCallback() {
@Override
public void onLocationResult(LocationResult locationResult) {
if (locationResult == null) {
return;
}
for (Location location : locationResult.getLocations()) {
// Update UI with location data
// Write a message to the database
};
};
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
//
} else {
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback,
null /* Looper */);
}
例如,如何停止侦听onStop方法中的位置更新?官方文档建议在onPause方法中停止位置,并在onResume方法中重新启动更新 代码如下所示:
@Override
protected void onPause() {
super.onPause();
stopLocationUpdates();
}
private void stopLocationUpdates() {
mFusedLocationClient.removeLocationUpdates(mLocationCallback);
}
@Override
protected void onResume() {
super.onResume();
if (mRequestingLocationUpdates) {
startLocationUpdates();
}
}
private void startLocationUpdates() {
mFusedLocationClient.requestLocationUpdates(mLocationRequest,
mLocationCallback,
null /* Looper */);
}
查看此链接了解更多信息:如果我在片段上,我应该将此代码放在父活动中,还是放在片段的onResume和onPause中?取决于实现,但一定要使用片段方法。这里有更多关于这方面的信息:。