2017-02-17 23 views
0

Я пытаюсь удалить все активные геозоны, когда моя деятельность.Удалить все активные геофунции по активности закрыть

Вот код, я использую:

private PendingIntent getGeofencePendingIntent() { 
     Intent intent = new Intent(this, GeofenceService.class); 
     // We use FLAG_UPDATE_CURRENT so that we get the same pending intent back when calling addgeoFences() 
     return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    } 

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     unregisterReceiver(receiver); 
     //Setup permissions for location. 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
       && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      ActivityCompat.requestPermissions(
        this, 
        new String[]{ 
          Manifest.permission.ACCESS_COARSE_LOCATION, 
          Manifest.permission.ACCESS_FINE_LOCATION 
        }, 
        LOCATION_PERMISSION_CODE 
      ); 
     } else { 
      if (lm != null) 
       lm.removeUpdates(this); 
     } 
     if (allRequestIds.size() != 0) { 
      LocationServices.GeofencingApi.removeGeofences(
        mGoogleApiClient, 
        allRequestIds 
      ); 
      allRequestIds.clear(); 
      filterMap.clear(); 
      registeredFences.clear(); 
      mGoogleApiClient.disconnect(); 
     } 
    } 

Я также попытался:

if (allRequestIds.size() != 0) { 
      LocationServices.GeofencingApi.removeGeofences(
        mGoogleApiClient, 
        getGeofencePendingIntent() 
      ); 
      allRequestIds.clear(); 
      filterMap.clear(); 
      registeredFences.clear(); 
      mGoogleApiClient.disconnect(); 
     } 

Я получаю эту ошибку:

Unable to destroy activity, GoogleApiClient is not connected yet. 

То же самое происходит, если я сделайте это по методу onStop().

Конечный результат: геологические параметры, которые добавляются во время предыдущих прогонов, сохраняются. Я не хочу этого. Что происходит не так?

ответ

0

Из сообщения об ошибке кажется, что ваш GoogleApiClient не подключен.

Попробуйте обернуть ваше заявление в if (mGoogleApiClient.isConnected()). Затем, если он возвращает false, я буду оглядываться на свой код, где я его остановил, то есть mGoogleApiClient.disconnect().

Обратите внимание, что onDestroy() вызывается, когда Activity является быть уничтожены, так что может быть, что GoogleApiClient уже отключен от системы. (хотя я также отмечаю, что вы сказали, что попробовали это в onStop())