FileDocCategorySizeDatePackage
PhotoBitmapLoader.javaAPI DocAndroid 5.1 API5438Thu Mar 12 22:22:52 GMT 2015com.android.ex.photo.loaders

PhotoBitmapLoader

public class PhotoBitmapLoader extends android.support.v4.content.AsyncTaskLoader implements PhotoBitmapLoaderInterface
Loader for the bitmap of a photo.

Fields Summary
private String
mPhotoUri
private android.graphics.Bitmap
mBitmap
Constructors Summary
public PhotoBitmapLoader(android.content.Context context, String photoUri)

        super(context);
        mPhotoUri = photoUri;
    
Methods Summary
public voiddeliverResult(com.android.ex.photo.loaders.PhotoBitmapLoaderInterface.BitmapResult result)
Called when there is new data to deliver to the client. The super class will take care of delivering it; the implementation here just adds a little more logic.

        Bitmap bitmap = result != null ? result.bitmap : null;
        if (isReset()) {
            // An async query came in while the loader is stopped.  We
            // don't need the result.
            if (bitmap != null) {
                onReleaseResources(bitmap);
            }
            return;
        }
        Bitmap oldBitmap = mBitmap;
        mBitmap = bitmap;

        if (isStarted()) {
            // If the Loader is currently started, we can immediately
            // deliver its results.
            super.deliverResult(result);
        }

        // At this point we can release the resources associated with
        // 'oldBitmap' if needed; now that the new result is delivered we
        // know that it is no longer in use.
        if (oldBitmap != null && oldBitmap != bitmap && !oldBitmap.isRecycled()) {
            onReleaseResources(oldBitmap);
        }
    
public com.android.ex.photo.loaders.PhotoBitmapLoaderInterface.BitmapResultloadInBackground()

        BitmapResult result = new BitmapResult();
        Context context = getContext();
        if (context != null && mPhotoUri != null) {
            final ContentResolver resolver = context.getContentResolver();
            try {
                result = ImageUtils.createLocalBitmap(resolver, Uri.parse(mPhotoUri),
                        PhotoViewController.sMaxPhotoSize);
                if (result.bitmap != null) {
                    result.bitmap.setDensity(DisplayMetrics.DENSITY_MEDIUM);
                }
            } catch (UnsupportedOperationException ex) {
                // We got image bytes, but unable to decode to a Bitmap
                result.status = BitmapResult.STATUS_EXCEPTION;
            }
        }

        return result;
    
public voidonCanceled(com.android.ex.photo.loaders.PhotoBitmapLoaderInterface.BitmapResult result)
Handles a request to cancel a load.

        super.onCanceled(result);

        // At this point we can release the resources associated with 'bitmap'
        // if needed.
        if (result != null) {
            onReleaseResources(result.bitmap);
        }
    
protected voidonReleaseResources(android.graphics.Bitmap bitmap)
Helper function to take care of releasing resources associated with an actively loaded data set.

        if (bitmap != null && !bitmap.isRecycled()) {
            bitmap.recycle();
        }
    
protected voidonReset()
Handles a request to completely reset the Loader.

        super.onReset();

        // Ensure the loader is stopped
        onStopLoading();

        // At this point we can release the resources associated with 'bitmap'
        // if needed.
        if (mBitmap != null) {
            onReleaseResources(mBitmap);
            mBitmap = null;
        }
    
protected voidonStartLoading()
Handles a request to start the Loader.

        if (mBitmap != null) {
            // If we currently have a result available, deliver it
            // immediately.
            BitmapResult result = new BitmapResult();
            result.status = BitmapResult.STATUS_SUCCESS;
            result.bitmap = mBitmap;
            deliverResult(result);
        }

        if (takeContentChanged() || mBitmap == null) {
            // If the data has changed since the last time it was loaded
            // or is not currently available, start a load.
            forceLoad();
        }
    
protected voidonStopLoading()
Handles a request to stop the Loader.

        // Attempt to cancel the current load task if possible.
        cancelLoad();
    
public voidsetPhotoUri(java.lang.String photoUri)

        mPhotoUri = photoUri;