在异步任务中注销并清除 GoogleAPIclient

Logout and Clear GoogleAPIclient in Async Task

我的代码可以很好地注销 google apiclient,但它在执行后留下了一个 activity 打开,有人可以告诉我应该把 finish() 放在哪里吗?杀死那个 activity 或者我怎样才能在异步任务中完成整个事情。我尝试使用异步处理,但由于客户端未连接而出现错误。

这是用于注销的代码 class 扩展到 activity:

public class GoogleDriveLogoutBackup extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = "drive-quickstart";
private GoogleApiClient mGoogleApiClient;


@Override
protected void onStart() {
    super.onStart();
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }

    mGoogleApiClient.connect();
}

@Override
public void onConnected(Bundle connectionHint) {
    Log.d("Connected","Here");
    mGoogleApiClient.clearDefaultAccountAndReconnect();
    finish();
}

@Override
public void onConnectionSuspended(int i) {
    finish();
}

@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
      }
}

这是我用于 Async class 的代码,我给出了错误:

public class GoogleDriveLogout extends AsyncTask<Void, Void, Void> {
private static final String TAG = "drive-quickstart";
private GoogleApiClient mGoogleApiClient;
private Context mcontext;

public GoogleDriveLogout(Context context) {
    this.mcontext = context;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(mcontext)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE)
                .addScope(Drive.SCOPE_APPFOLDER)
                .build();
    }

    mGoogleApiClient.connect();
}


@Override
protected Void doInBackground(Void... params) {
    Log.d("Connected", "Here");
    mGoogleApiClient.clearDefaultAccountAndReconnect();
    return null;
}
}

我现在可以通过调用 google 本身提供的 ApiClientAsyncTask 来做到这一点。