我在我的应用程序中使用Google+登录,并遵循Getting Started和Google+ 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,我永远无法断开连接。
除此之外,我很困惑为什么要在断开连接后立即进行连接。
答案 0 :(得分:1)
所以我会回答我自己的问题:
在BaseActivity上我这样做:
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
这意味着当我尝试断开连接时,它已经断开连接 这里最重要的是遵循this answer中的规则,在我的情况下,规则是:
主要在基本活动中实施,并让其他人扩展。 这是每个活动中的连接/断开连接,但代码只有一个 的地方。