2015-04-10 2 views
1

Я делаю простой вход и выход google с использованием API. но когда я выхожу из системы, используя код ниже, иногда googleapiclient не отключается. и из-за этого, когда я собираюсь войти в систему, он автоматически войдет в мою предыдущую учетную запись, а попросит выбрать учетную запись.Как отключиться от googleapiclient в android

Код для выхода из системы:

public void googlePlusLogout() { 
     if (mGoogleApiClient.isConnected()) { 
      Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); 
      mGoogleApiClient.disconnect(); 
      Log.e("APPLICATION", "DISCONNECTED"); 

     } 

, когда я называю выше методом для выхода из системы, иногда mGoogleApiClient.disconnect() не называется. помогите мне с этой проблемой.

ответ

0

Существует новый API попробовать это:

@Override 
public void logOut() { 
    if (googleApiClient.isConnected()) { 
     signOut(); 
     revokeAccess(); 
     googleApiClient.disconnect(); 
    } 
} 

private void signOut() { 
    Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        App.logger().d(TAG, "signOut: status = " + status); 
       } 
      }); 
} 

private void revokeAccess() { 
    Auth.GoogleSignInApi.revokeAccess(googleApiClient).setResultCallback(
      new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        App.logger().d(TAG, "revokeAccess: status = " + status); 
       } 
      }); 
} 
0

После многих утечек памяти, это то, что я придумал. Больше нет утечек памяти. Это многословный? да. Это слишком многословно? возможно. Это работает? да.

if (mGoogleApiClient !=null) if (mGoogleApiClient.isConnected()) LocationServices.FusedLocationApi.removeLocationUpdates(this); 
if (mGoogleApiClient !=null) mGoogleApiClient.unregisterConnectionCallbacks(this); 
if (mGoogleApiClient !=null) mGoogleApiClient.unregisterConnectionFailedListener(this); 
if (mGoogleApiClient !=null) if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect(); 
mGoogleApiClient =null; 
Смежные вопросы