@Override
    public D loadInBackground() {
        synchronized (this) {
            if (isLoadInBackgroundCanceled()) {
                throw new OperationCanceledException();
            }
            mCancellationSignal = new CancellationSignal();
        }
        try {
            Cursor cursor = getContext().getContentResolver()
                    .query(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder,
                            mCancellationSignal);
            if (cursor != null) {
                try {
                    // Ensure the cursor window is filled.
                    cursor.getCount();
                    cursor.registerContentObserver(mObserver);
                } catch (RuntimeException ex) {
                    cursor.close();
                    throw ex;
                }
                return wrap(cursor);
            }
            return null;
        } finally {
            synchronized (this) {
                mCancellationSignal = null;
            }
        }
    }
@Override
    public D loadInBackground() {
        synchronized (this) {
            if (isLoadInBackgroundCanceled()) {
                throw new OperationCanceledException();
            }
            mCancellationSignal = new CancellationSignal();
        }
        try {
            Cursor cursor = getContext().getContentResolver()
                    .query(mUri, mProjection, mSelection, mSelectionArgs, mSortOrder,
                            mCancellationSignal);
            if (cursor != null) {
                try {
                    
                    cursor.getCount();
                    cursor.registerContentObserver(mObserver);
                } catch (RuntimeException ex) {
                    cursor.close();
                    throw ex;
                }
                return wrap(cursor);
            }
            return null;
        } finally {
            synchronized (this) {
                mCancellationSignal = null;
            }
        }
    }
@ Override public D loadInBackground ( ) { synchronized ( this ) { if ( isLoadInBackgroundCanceled ( ) ) { throw new OperationCanceledException ( ) ; } mCancellationSignal = new CancellationSignal ( ) ; } try { Cursor cursor = getContext ( ) . getContentResolver ( ) . query ( mUri , mProjection , mSelection , mSelectionArgs , mSortOrder , mCancellationSignal ) ; if ( cursor != null ) { try { // Ensure the cursor window is filled. cursor . getCount ( ) ; cursor . registerContentObserver ( mObserver ) ; } catch ( RuntimeException ex ) { cursor . close ( ) ; throw ex ; } return wrap ( cursor ) ; } return null ; } finally { synchronized ( this ) { mCancellationSignal = null ; } } }
/* Runs on a worker thread
/ * Runs on a worker thread