Rabbit-R1/android (non root)/java/sources/androidx/loader/content/AsyncTaskLoader.java
2024-05-21 17:08:36 -04:00

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();
}
}
}