Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用FusedLocation停止位置更新_Android - Fatal编程技术网

Android 使用FusedLocation停止位置更新

Android 使用FusedLocation停止位置更新,android,Android,如何停止FusedLocation侦听器进行更新? 我是这样设置的: mFusedLocationClient = LocationServices.getFusedLocationProviderClient(getActivity()); LocationRequest mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(10000); mLocationRequest.

如何停止FusedLocation侦听器进行更新? 我是这样设置的:

    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中?取决于实现,但一定要使用片段方法。这里有更多关于这方面的信息:。