Android Open Source - android-demos Api Client Async Task






From Project

Back to project page android-demos.

License

The source code is released under:

Apache License

If you think the Android project android-demos listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

// Copyright 2013 Google Inc. All Rights Reserved.
/*from  w  w w.ja  v  a  2s .c  o  m*/
package com.google.android.gms.drive.sample.demo;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.drive.Drive;

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

import java.util.concurrent.CountDownLatch;

/**
 * An AsyncTask that maintains a connected client.
 */
public abstract class ApiClientAsyncTask<Params, Progress, Result>
        extends AsyncTask<Params, Progress, Result> {

    private GoogleApiClient mClient;

    public ApiClientAsyncTask(Context context) {
        GoogleApiClient.Builder builder = new GoogleApiClient.Builder(context)
                .addApi(Drive.API)
                .addScope(Drive.SCOPE_FILE);
        mClient = builder.build();
    }

    @Override
    protected final Result doInBackground(Params... params) {
        Log.d("TAG", "in background");
        final CountDownLatch latch = new CountDownLatch(1);
        mClient.registerConnectionCallbacks(new ConnectionCallbacks() {
            @Override
            public void onConnectionSuspended(int cause) {
            }

            @Override
            public void onConnected(Bundle arg0) {
                latch.countDown();
            }
        });
        mClient.registerConnectionFailedListener(new OnConnectionFailedListener() {
            @Override
            public void onConnectionFailed(ConnectionResult arg0) {
                latch.countDown();
            }
        });
        mClient.connect();
        try {
            latch.await();
        } catch (InterruptedException e) {
            return null;
        }
        if (!mClient.isConnected()) {
            return null;
        }
        try {
            return doInBackgroundConnected(params);
        } finally {
            mClient.disconnect();
        }
    }

    /**
     * Override this method to perform a computation on a background thread, while the client is
     * connected.
     */
    protected abstract Result doInBackgroundConnected(Params... params);

    /**
     * Gets the GoogleApliClient owned by this async task.
     */
    protected GoogleApiClient getGoogleApiClient() {
        return mClient;
    }
}




Java Source Code List

com.google.android.gms.drive.sample.demo.ApiClientAsyncTask.java
com.google.android.gms.drive.sample.demo.BaseDemoActivity.java
com.google.android.gms.drive.sample.demo.CreateEmptyFileActivity.java
com.google.android.gms.drive.sample.demo.CreateFileActivity.java
com.google.android.gms.drive.sample.demo.CreateFileInAppFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFileInFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFileWithCreatorActivity.java
com.google.android.gms.drive.sample.demo.CreateFolderActivity.java
com.google.android.gms.drive.sample.demo.CreateFolderInFolderActivity.java
com.google.android.gms.drive.sample.demo.DeleteCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.EditContentsActivity.java
com.google.android.gms.drive.sample.demo.EditMetadataActivity.java
com.google.android.gms.drive.sample.demo.HomeActivity.java
com.google.android.gms.drive.sample.demo.InsertUpdateCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.ListFilesActivity.java
com.google.android.gms.drive.sample.demo.ListFilesInFolderActivity.java
com.google.android.gms.drive.sample.demo.PickFileWithOpenerActivity.java
com.google.android.gms.drive.sample.demo.PickFolderWithOpenerActivity.java
com.google.android.gms.drive.sample.demo.PinFileActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesInFolderActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesSharedWithMeActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesWithAInTitleActivity.java
com.google.android.gms.drive.sample.demo.QueryFilesWithCustomPropertyActivity.java
com.google.android.gms.drive.sample.demo.QueryNonTextFilesActivity.java
com.google.android.gms.drive.sample.demo.QuerySortedFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryStarredTextFilesActivity.java
com.google.android.gms.drive.sample.demo.QueryTextOrHtmlFilesActivity.java
com.google.android.gms.drive.sample.demo.ResultsAdapter.java
com.google.android.gms.drive.sample.demo.RetrieveContentsActivity.java
com.google.android.gms.drive.sample.demo.RetrieveContentsWithProgressDialogActivity.java
com.google.android.gms.drive.sample.demo.RetrieveMetadataActivity.java
com.google.android.gms.drive.sample.demo.SyncRequestsActivity.java
com.google.android.gms.drive.sample.demo.events.ListenChangeEventsForFilesActivity.java