【问题标题】:GoogleApiClient never connected on sign outGoogleApiClient 在退出时从未连接
【发布时间】:2014-06-18 15:22:56
【问题描述】:

我在我的应用程序上使用 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() 检查总是错误的,我永远无法断开连接。

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

【问题讨论】:

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


    【解决方案1】:

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

    在 BaseActivity 上我正在这样做:

    protected void onStop() {
        super.onStop();
    
        if (mGoogleApiClient.isConnected()) {
            mGoogleApiClient.disconnect();
        }
    }
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多