GoogleApiClient从未在注销时连接

时间:2014-06-18 15:22:56

标签: android google-plus google-play-services

我在我的应用程序中使用Google+登录,并遵循Getting StartedGoogle+ Sign-in for Android等参考。

所以情况如下:
我有一个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,我永远无法断开连接。

除此之外,我很困惑为什么要在断开连接后立即进行连接。

1 个答案:

答案 0 :(得分:1)

所以我会回答我自己的问题:

在BaseActivity上我这样做:

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

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

这意味着当我尝试断开连接时,它已经断开连接 这里最重要的是遵循this answer中的规则,在我的情况下,规则是:

  

主要在基本活动中实施,并让其他人扩展。   这是每个活动中的连接/断开连接,但代码只有一个   的地方。