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
*/