2016-12-26 6 views
0

У меня есть код, который отлично работает для выхода из google apiclient, но он оставил одно действие, открытое после выполнения, либо кто-нибудь скажет, где я должен положить finish(); для того чтобы убить эту деятельность или как я могу сделать все в асинхронной задаче. Я попытался сделать с асинхронным, но получил ошибку, поскольку клиент не подключен.Выйти и очистить GoogleAPIclient в Async Задайте

Вот код для выхода из системы с классом расширения для деятельности:

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, который предоставляется самим Google.