2014-06-18 2 views
2

내 애플리케이션에서 Google+ 로그인을 사용하고 Getting StartedGoogle+ Sign-in for Android과 같은 참조를 따랐습니다. 로그 아웃 할 때 GoogleApiClient가 연결되지 않음

그래서 상황은 다음
나는 하나 LoginActivity과 MainActivity, 모두 BaseActivity에 확장 (그래서 그들은 GoogleApiClient의 인스턴스를 공유 할 수 있으며 필요한 인터페이스 구현) 내가 로그인 할 때 LoginActivity가하는이 다음 :

public void onConnected(Bundle connectionHint) { 
     super.onConnected(connectionHint); 
     mSignInClicked = false; 
     launchMain(); 
    } 
    private void launchMain() { 
     Intent i = new Intent(this, MainActivity.class); 
     startActivity(i); 
     finish(); 
    } 

그리고 MainActivity가 실행됩니다.

하지만 난 다음 내가 할 MainActivity에서 로그 아웃 할 때

protected static GoogleApiClient mGoogleApiClient; 
public void signOut() { 
    if (mGoogleApiClient.isConnected()) { 
     Plus.AccountApi.clearDefaultAccount(mGoogleApiClient); 
     mGoogleApiClient.disconnect(); 
     mGoogleApiClient.connect(); 
     Intent i = new Intent(getApplicationContext(),LoginActivity.class); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK| Intent.FLAG_ACTIVITY_CLEAR_TASK); 
     startActivity(i); 
    } 
} 

mGoogleApiClient.isConnected() 검사가 항상 false입니다, 나는 분리 할 수 ​​결코 해요.

게다가 내가 왜 연결을 끊어야 연결을해야하는지 혼란 스럽습니다. 나는이 일을 한 BaseActivity에

:

답변

1

그래서 난 내 자신의 질문에 대답 할 것이다

protected void onStop() { 
    super.onStop(); 

    if (mGoogleApiClient.isConnected()) { 
     mGoogleApiClient.disconnect(); 
    } 
} 

을 내가 분리하려고 할 때, 이미 해제 된 것을 의미한다.

가 baseactivity에서 주로 구현하고, 다른 사람이 그 연장이 :
여기에서 중요한 것은 규칙이있다 this answer의 내 상황에서 규칙을 따르는 것입니다. 이것은 각 활동에서 연결/연결 해제이지만 하나의 코드가 인 상태로 연결됩니다.

관련 문제