package android.support.v4.content; import android.content.Context; import android.os.Handler; import android.os.SystemClock; import android.support.v4.util.TimeUtils; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.concurrent.CountDownLatch; public abstract class AsyncTaskLoader<D> extends Loader<D> { static final boolean DEBUG = false; static final String TAG = "AsyncTaskLoader"; volatile AsyncTaskLoader<D>.LoadTask mCancellingTask; Handler mHandler; long mLastLoadCompleteTime = -10000L; volatile AsyncTaskLoader<D>.LoadTask mTask; long mUpdateThrottle; public AsyncTaskLoader(Context paramContext) { super(paramContext); } public boolean cancelLoad() { boolean bool = false; if (this.mTask != null) { if (this.mCancellingTask == null) { break label52; } if (this.mTask.waiting) { this.mTask.waiting = false; this.mHandler.removeCallbacks(this.mTask); } this.mTask = null; } for (;;) { return bool; label52: if (this.mTask.waiting) { this.mTask.waiting = false; this.mHandler.removeCallbacks(this.mTask); this.mTask = null; } else { bool = this.mTask.cancel(false); if (bool) { this.mCancellingTask = this.mTask; } this.mTask = null; } } } void dispatchOnCancelled(AsyncTaskLoader<D>.LoadTask paramAsyncTaskLoader, D paramD) { onCanceled(paramD); if (this.mCancellingTask == paramAsyncTaskLoader) { this.mLastLoadCompleteTime = SystemClock.uptimeMillis(); this.mCancellingTask = null; executePendingTask(); } } void dispatchOnLoadComplete(AsyncTaskLoader<D>.LoadTask paramAsyncTaskLoader, D paramD) { if (this.mTask != paramAsyncTaskLoader) { dispatchOnCancelled(paramAsyncTaskLoader, paramD); } for (;;) { return; if (isAbandoned()) { onCanceled(paramD); } else { this.mLastLoadCompleteTime = SystemClock.uptimeMillis(); this.mTask = null; deliverResult(paramD); } } } public void dump(String paramString, FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString) { super.dump(paramString, paramFileDescriptor, paramPrintWriter, paramArrayOfString); if (this.mTask != null) { paramPrintWriter.print(paramString); paramPrintWriter.print("mTask="); paramPrintWriter.print(this.mTask); paramPrintWriter.print(" waiting="); paramPrintWriter.println(this.mTask.waiting); } if (this.mCancellingTask != null) { paramPrintWriter.print(paramString); paramPrintWriter.print("mCancellingTask="); paramPrintWriter.print(this.mCancellingTask); paramPrintWriter.print(" waiting="); paramPrintWriter.println(this.mCancellingTask.waiting); } if (this.mUpdateThrottle != 0L) { paramPrintWriter.print(paramString); paramPrintWriter.print("mUpdateThrottle="); TimeUtils.formatDuration(this.mUpdateThrottle, paramPrintWriter); paramPrintWriter.print(" mLastLoadCompleteTime="); TimeUtils.formatDuration(this.mLastLoadCompleteTime, SystemClock.uptimeMillis(), paramPrintWriter); paramPrintWriter.println(); } } void executePendingTask() { if ((this.mCancellingTask == null) && (this.mTask != null)) { if (this.mTask.waiting) { this.mTask.waiting = false; this.mHandler.removeCallbacks(this.mTask); } if ((this.mUpdateThrottle <= 0L) || (SystemClock.uptimeMillis() >= this.mLastLoadCompleteTime + this.mUpdateThrottle)) { break label98; } this.mTask.waiting = true; this.mHandler.postAtTime(this.mTask, this.mLastLoadCompleteTime + this.mUpdateThrottle); } for (;;) { return; label98: this.mTask.executeOnExecutor(ModernAsyncTask.THREAD_POOL_EXECUTOR, (Void[])null); } } public abstract D loadInBackground(); public void onCanceled(D paramD) {} protected void onForceLoad() { super.onForceLoad(); cancelLoad(); this.mTask = new LoadTask(); executePendingTask(); } protected D onLoadInBackground() { return loadInBackground(); } public void setUpdateThrottle(long paramLong) { this.mUpdateThrottle = paramLong; if (paramLong != 0L) { this.mHandler = new Handler(); } } public void waitForLoader() { LoadTask localLoadTask = this.mTask; if (localLoadTask != null) {} try { localLoadTask.done.await(); label16: return; } catch (InterruptedException localInterruptedException) { break label16; } } final class LoadTask extends ModernAsyncTask<Void, Void, D> implements Runnable { private CountDownLatch done = new CountDownLatch(1); D result; boolean waiting; LoadTask() {} protected D doInBackground(Void... paramVarArgs) { this.result = AsyncTaskLoader.this.onLoadInBackground(); return this.result; } protected void onCancelled() { try { AsyncTaskLoader.this.dispatchOnCancelled(this, this.result); return; } finally { this.done.countDown(); } } protected void onPostExecute(D paramD) { try { AsyncTaskLoader.this.dispatchOnLoadComplete(this, paramD); return; } finally { this.done.countDown(); } } public void run() { this.waiting = false; AsyncTaskLoader.this.executePendingTask(); } } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: android.support.v4.content.AsyncTaskLoader * JD-Core Version: 0.7.0.1 */