2016-12-26 54 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。