如何在android中断开googleapiclient

时间:2015-04-10 09:17:27

标签: android google-plus android-googleapiclient

我正在使用API​​进行简单的谷歌登录和注销。但是当我使用下面的代码注销时,有时googleapiclient不会断开连接。因此,当我要登录时,它会自动登录我以前的帐户,而不是要求选择帐户。

退出代码:

public void googlePlusLogout() {
        if (mGoogleApiClient.isConnected()) {
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
            mGoogleApiClient.disconnect();
            Log.e("APPLICATION", "DISCONNECTED");

        }

当我调用上面的注销方法时,有时候mGoogleApiClient.disconnect()没有被调用。帮助我解决这个问题。

2 个答案:

答案 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;