2017-12-18 1 views
0

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()); 
    } 

답변

1

단지 requestLocationUpdates에 대한들의 OnDestroy

에서 removeLocationUpdates를 호출 나머지는 말한다 :

이 호출은 구글이 서비스 연결이 활성화 플레이 계속됩니다, 더 이상 필요없는 경우 removeLocationUpdates (LocationCallback)를 호출하고, 그렇지 않으면 removeLocationUpdates 자동 연결 관리의 이점을 잃게됩니다.

0

그냥이에 onDestroy();을 변경

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if(locationclient!=null) 
      locationclient.disconnect(); 
    }