2016-12-26 55 views
0

我的代碼適用於Google apiclient註銷,但它在執行後留下了一個打開的活動,可以有人告訴我應該在哪裏放置finish();殺死那個活動,或者我怎樣才能完成異步任務中的整件事情。我嘗試使用異步,但由於客戶端未連接而出錯。在異步任務中註銷並清除GoogleAPIclient任務

下面是使用類擴展到活動註銷代碼:

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) { 
     } 
} 

這裏是代碼我米使用,我給我的錯誤異步類:

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; 
} 
} 

回答

0

我能做到它現在通過使用由谷歌本身提供的調用ApiClientAsyncTask。