mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-26 17:12:31 -06:00
227 lines
7.1 KiB
Java
227 lines
7.1 KiB
Java
package androidx.loader.content;
|
|
|
|
import android.content.Context;
|
|
import android.os.Handler;
|
|
import android.os.SystemClock;
|
|
import androidx.core.os.OperationCanceledException;
|
|
import androidx.core.util.TimeUtils;
|
|
import java.io.FileDescriptor;
|
|
import java.io.PrintWriter;
|
|
import java.util.concurrent.CountDownLatch;
|
|
import java.util.concurrent.Executor;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public abstract class AsyncTaskLoader<D> extends Loader<D> {
|
|
static final boolean DEBUG = false;
|
|
static final String TAG = "AsyncTaskLoader";
|
|
volatile AsyncTaskLoader<D>.LoadTask mCancellingTask;
|
|
private final Executor mExecutor;
|
|
Handler mHandler;
|
|
long mLastLoadCompleteTime;
|
|
volatile AsyncTaskLoader<D>.LoadTask mTask;
|
|
long mUpdateThrottle;
|
|
|
|
public void cancelLoadInBackground() {
|
|
}
|
|
|
|
public boolean isLoadInBackgroundCanceled() {
|
|
return this.mCancellingTask != null;
|
|
}
|
|
|
|
public abstract D loadInBackground();
|
|
|
|
public void onCanceled(D d) {
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes2.dex */
|
|
public final class LoadTask extends ModernAsyncTask<Void, Void, D> implements Runnable {
|
|
private final CountDownLatch mDone = new CountDownLatch(1);
|
|
boolean waiting;
|
|
|
|
LoadTask() {
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
@Override // androidx.loader.content.ModernAsyncTask
|
|
public D doInBackground(Void... voidArr) {
|
|
try {
|
|
return (D) AsyncTaskLoader.this.onLoadInBackground();
|
|
} catch (OperationCanceledException e) {
|
|
if (this.isCancelled()) {
|
|
return null;
|
|
}
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
@Override // androidx.loader.content.ModernAsyncTask
|
|
protected void onPostExecute(D d) {
|
|
try {
|
|
AsyncTaskLoader.this.dispatchOnLoadComplete(this, d);
|
|
} finally {
|
|
this.mDone.countDown();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.loader.content.ModernAsyncTask
|
|
protected void onCancelled(D d) {
|
|
try {
|
|
AsyncTaskLoader.this.dispatchOnCancelled(this, d);
|
|
} finally {
|
|
this.mDone.countDown();
|
|
}
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
this.waiting = false;
|
|
AsyncTaskLoader.this.executePendingTask();
|
|
}
|
|
|
|
public void waitForLoader() {
|
|
try {
|
|
this.mDone.await();
|
|
} catch (InterruptedException unused) {
|
|
}
|
|
}
|
|
}
|
|
|
|
public AsyncTaskLoader(Context context) {
|
|
this(context, ModernAsyncTask.THREAD_POOL_EXECUTOR);
|
|
}
|
|
|
|
private AsyncTaskLoader(Context context, Executor executor) {
|
|
super(context);
|
|
this.mLastLoadCompleteTime = -10000L;
|
|
this.mExecutor = executor;
|
|
}
|
|
|
|
public void setUpdateThrottle(long j) {
|
|
this.mUpdateThrottle = j;
|
|
if (j != 0) {
|
|
this.mHandler = new Handler();
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
@Override // androidx.loader.content.Loader
|
|
public void onForceLoad() {
|
|
super.onForceLoad();
|
|
cancelLoad();
|
|
this.mTask = new LoadTask();
|
|
executePendingTask();
|
|
}
|
|
|
|
@Override // androidx.loader.content.Loader
|
|
protected boolean onCancelLoad() {
|
|
if (this.mTask == null) {
|
|
return false;
|
|
}
|
|
if (!this.mStarted) {
|
|
this.mContentChanged = true;
|
|
}
|
|
if (this.mCancellingTask != null) {
|
|
if (this.mTask.waiting) {
|
|
this.mTask.waiting = false;
|
|
this.mHandler.removeCallbacks(this.mTask);
|
|
}
|
|
this.mTask = null;
|
|
return false;
|
|
}
|
|
if (this.mTask.waiting) {
|
|
this.mTask.waiting = false;
|
|
this.mHandler.removeCallbacks(this.mTask);
|
|
this.mTask = null;
|
|
return false;
|
|
}
|
|
boolean cancel = this.mTask.cancel(false);
|
|
if (cancel) {
|
|
this.mCancellingTask = this.mTask;
|
|
cancelLoadInBackground();
|
|
}
|
|
this.mTask = null;
|
|
return cancel;
|
|
}
|
|
|
|
void executePendingTask() {
|
|
if (this.mCancellingTask != null || this.mTask == null) {
|
|
return;
|
|
}
|
|
if (this.mTask.waiting) {
|
|
this.mTask.waiting = false;
|
|
this.mHandler.removeCallbacks(this.mTask);
|
|
}
|
|
if (this.mUpdateThrottle > 0 && SystemClock.uptimeMillis() < this.mLastLoadCompleteTime + this.mUpdateThrottle) {
|
|
this.mTask.waiting = true;
|
|
this.mHandler.postAtTime(this.mTask, this.mLastLoadCompleteTime + this.mUpdateThrottle);
|
|
} else {
|
|
this.mTask.executeOnExecutor(this.mExecutor, null);
|
|
}
|
|
}
|
|
|
|
void dispatchOnCancelled(AsyncTaskLoader<D>.LoadTask loadTask, D d) {
|
|
onCanceled(d);
|
|
if (this.mCancellingTask == loadTask) {
|
|
rollbackContentChanged();
|
|
this.mLastLoadCompleteTime = SystemClock.uptimeMillis();
|
|
this.mCancellingTask = null;
|
|
deliverCancellation();
|
|
executePendingTask();
|
|
}
|
|
}
|
|
|
|
void dispatchOnLoadComplete(AsyncTaskLoader<D>.LoadTask loadTask, D d) {
|
|
if (this.mTask != loadTask) {
|
|
dispatchOnCancelled(loadTask, d);
|
|
return;
|
|
}
|
|
if (isAbandoned()) {
|
|
onCanceled(d);
|
|
return;
|
|
}
|
|
commitContentChanged();
|
|
this.mLastLoadCompleteTime = SystemClock.uptimeMillis();
|
|
this.mTask = null;
|
|
deliverResult(d);
|
|
}
|
|
|
|
protected D onLoadInBackground() {
|
|
return loadInBackground();
|
|
}
|
|
|
|
public void waitForLoader() {
|
|
AsyncTaskLoader<D>.LoadTask loadTask = this.mTask;
|
|
if (loadTask != null) {
|
|
loadTask.waitForLoader();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.loader.content.Loader
|
|
@Deprecated
|
|
public void dump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
|
|
super.dump(str, fileDescriptor, printWriter, strArr);
|
|
if (this.mTask != null) {
|
|
printWriter.print(str);
|
|
printWriter.print("mTask=");
|
|
printWriter.print(this.mTask);
|
|
printWriter.print(" waiting=");
|
|
printWriter.println(this.mTask.waiting);
|
|
}
|
|
if (this.mCancellingTask != null) {
|
|
printWriter.print(str);
|
|
printWriter.print("mCancellingTask=");
|
|
printWriter.print(this.mCancellingTask);
|
|
printWriter.print(" waiting=");
|
|
printWriter.println(this.mCancellingTask.waiting);
|
|
}
|
|
if (this.mUpdateThrottle != 0) {
|
|
printWriter.print(str);
|
|
printWriter.print("mUpdateThrottle=");
|
|
TimeUtils.formatDuration(this.mUpdateThrottle, printWriter);
|
|
printWriter.print(" mLastLoadCompleteTime=");
|
|
TimeUtils.formatDuration(this.mLastLoadCompleteTime, SystemClock.uptimeMillis(), printWriter);
|
|
printWriter.println();
|
|
}
|
|
}
|
|
}
|