我正在使用API进行简单的谷歌登录和注销。但是当我使用下面的代码注销时,有时googleapiclient不会断开连接。因此,当我要登录时,它会自动登录我以前的帐户,而不是要求选择帐户。
退出代码:
public void googlePlusLogout() {
if (mGoogleApiClient.isConnected()) {
Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
mGoogleApiClient.disconnect();
Log.e("APPLICATION", "DISCONNECTED");
}
当我调用上面的注销方法时,有时候mGoogleApiClient.disconnect()
没有被调用。帮助我解决这个问题。
答案 0 :(得分: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);
}
});
}
答案 1 :(得分: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;