mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-30 11:02:31 -06:00
273 lines
9.7 KiB
Java
273 lines
9.7 KiB
Java
|
package androidx.loader.content;
|
||
|
|
||
|
import android.os.Binder;
|
||
|
import android.os.Handler;
|
||
|
import android.os.Looper;
|
||
|
import android.os.Message;
|
||
|
import android.os.Process;
|
||
|
import android.util.Log;
|
||
|
import java.util.concurrent.BlockingQueue;
|
||
|
import java.util.concurrent.Callable;
|
||
|
import java.util.concurrent.CancellationException;
|
||
|
import java.util.concurrent.ExecutionException;
|
||
|
import java.util.concurrent.Executor;
|
||
|
import java.util.concurrent.FutureTask;
|
||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||
|
import java.util.concurrent.ThreadFactory;
|
||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||
|
import java.util.concurrent.TimeUnit;
|
||
|
import java.util.concurrent.TimeoutException;
|
||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
abstract class ModernAsyncTask<Params, Progress, Result> {
|
||
|
private static final int CORE_POOL_SIZE = 5;
|
||
|
private static final int KEEP_ALIVE = 1;
|
||
|
private static final String LOG_TAG = "AsyncTask";
|
||
|
private static final int MAXIMUM_POOL_SIZE = 128;
|
||
|
private static final int MESSAGE_POST_PROGRESS = 2;
|
||
|
private static final int MESSAGE_POST_RESULT = 1;
|
||
|
public static final Executor THREAD_POOL_EXECUTOR;
|
||
|
private static volatile Executor sDefaultExecutor;
|
||
|
private static InternalHandler sHandler;
|
||
|
private static final BlockingQueue<Runnable> sPoolWorkQueue;
|
||
|
private static final ThreadFactory sThreadFactory;
|
||
|
private final FutureTask<Result> mFuture;
|
||
|
private final WorkerRunnable<Params, Result> mWorker;
|
||
|
private volatile Status mStatus = Status.PENDING;
|
||
|
final AtomicBoolean mCancelled = new AtomicBoolean();
|
||
|
final AtomicBoolean mTaskInvoked = new AtomicBoolean();
|
||
|
|
||
|
/* loaded from: classes2.dex */
|
||
|
public enum Status {
|
||
|
PENDING,
|
||
|
RUNNING,
|
||
|
FINISHED
|
||
|
}
|
||
|
|
||
|
public static void setDefaultExecutor(Executor executor) {
|
||
|
sDefaultExecutor = executor;
|
||
|
}
|
||
|
|
||
|
protected abstract Result doInBackground(Params... paramsArr);
|
||
|
|
||
|
public final Status getStatus() {
|
||
|
return this.mStatus;
|
||
|
}
|
||
|
|
||
|
protected void onCancelled() {
|
||
|
}
|
||
|
|
||
|
protected void onPostExecute(Result result) {
|
||
|
}
|
||
|
|
||
|
protected void onPreExecute() {
|
||
|
}
|
||
|
|
||
|
protected void onProgressUpdate(Progress... progressArr) {
|
||
|
}
|
||
|
|
||
|
static {
|
||
|
ThreadFactory threadFactory = new ThreadFactory() { // from class: androidx.loader.content.ModernAsyncTask.1
|
||
|
private final AtomicInteger mCount = new AtomicInteger(1);
|
||
|
|
||
|
@Override // java.util.concurrent.ThreadFactory
|
||
|
public Thread newThread(Runnable runnable) {
|
||
|
return new Thread(runnable, "ModernAsyncTask #" + this.mCount.getAndIncrement());
|
||
|
}
|
||
|
};
|
||
|
sThreadFactory = threadFactory;
|
||
|
LinkedBlockingQueue linkedBlockingQueue = new LinkedBlockingQueue(10);
|
||
|
sPoolWorkQueue = linkedBlockingQueue;
|
||
|
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(5, 128, 1L, TimeUnit.SECONDS, linkedBlockingQueue, threadFactory);
|
||
|
THREAD_POOL_EXECUTOR = threadPoolExecutor;
|
||
|
sDefaultExecutor = threadPoolExecutor;
|
||
|
}
|
||
|
|
||
|
private static Handler getHandler() {
|
||
|
InternalHandler internalHandler;
|
||
|
synchronized (ModernAsyncTask.class) {
|
||
|
if (sHandler == null) {
|
||
|
sHandler = new InternalHandler();
|
||
|
}
|
||
|
internalHandler = sHandler;
|
||
|
}
|
||
|
return internalHandler;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
public ModernAsyncTask() {
|
||
|
WorkerRunnable<Params, Result> workerRunnable = new WorkerRunnable<Params, Result>() { // from class: androidx.loader.content.ModernAsyncTask.2
|
||
|
@Override // java.util.concurrent.Callable
|
||
|
public Result call() throws Exception {
|
||
|
ModernAsyncTask.this.mTaskInvoked.set(true);
|
||
|
Result result = null;
|
||
|
try {
|
||
|
Process.setThreadPriority(10);
|
||
|
result = (Result) ModernAsyncTask.this.doInBackground(this.mParams);
|
||
|
Binder.flushPendingCommands();
|
||
|
return result;
|
||
|
} finally {
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
this.mWorker = workerRunnable;
|
||
|
this.mFuture = new FutureTask<Result>(workerRunnable) { // from class: androidx.loader.content.ModernAsyncTask.3
|
||
|
@Override // java.util.concurrent.FutureTask
|
||
|
protected void done() {
|
||
|
try {
|
||
|
ModernAsyncTask.this.postResultIfNotInvoked(get());
|
||
|
} catch (InterruptedException e) {
|
||
|
Log.w(ModernAsyncTask.LOG_TAG, e);
|
||
|
} catch (CancellationException unused) {
|
||
|
ModernAsyncTask.this.postResultIfNotInvoked(null);
|
||
|
} catch (ExecutionException e2) {
|
||
|
throw new RuntimeException("An error occurred while executing doInBackground()", e2.getCause());
|
||
|
} catch (Throwable th) {
|
||
|
throw new RuntimeException("An error occurred while executing doInBackground()", th);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
void postResultIfNotInvoked(Result result) {
|
||
|
if (this.mTaskInvoked.get()) {
|
||
|
return;
|
||
|
}
|
||
|
postResult(result);
|
||
|
}
|
||
|
|
||
|
Result postResult(Result result) {
|
||
|
getHandler().obtainMessage(1, new AsyncTaskResult(this, result)).sendToTarget();
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
protected void onCancelled(Result result) {
|
||
|
onCancelled();
|
||
|
}
|
||
|
|
||
|
public final boolean isCancelled() {
|
||
|
return this.mCancelled.get();
|
||
|
}
|
||
|
|
||
|
public final boolean cancel(boolean z) {
|
||
|
this.mCancelled.set(true);
|
||
|
return this.mFuture.cancel(z);
|
||
|
}
|
||
|
|
||
|
public final Result get() throws InterruptedException, ExecutionException {
|
||
|
return this.mFuture.get();
|
||
|
}
|
||
|
|
||
|
public final Result get(long j, TimeUnit timeUnit) throws InterruptedException, ExecutionException, TimeoutException {
|
||
|
return this.mFuture.get(j, timeUnit);
|
||
|
}
|
||
|
|
||
|
public final ModernAsyncTask<Params, Progress, Result> execute(Params... paramsArr) {
|
||
|
return executeOnExecutor(sDefaultExecutor, paramsArr);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: package-private */
|
||
|
/* renamed from: androidx.loader.content.ModernAsyncTask$4, reason: invalid class name */
|
||
|
/* loaded from: classes2.dex */
|
||
|
public static /* synthetic */ class AnonymousClass4 {
|
||
|
static final /* synthetic */ int[] $SwitchMap$androidx$loader$content$ModernAsyncTask$Status;
|
||
|
|
||
|
static {
|
||
|
int[] iArr = new int[Status.values().length];
|
||
|
$SwitchMap$androidx$loader$content$ModernAsyncTask$Status = iArr;
|
||
|
try {
|
||
|
iArr[Status.RUNNING.ordinal()] = 1;
|
||
|
} catch (NoSuchFieldError unused) {
|
||
|
}
|
||
|
try {
|
||
|
$SwitchMap$androidx$loader$content$ModernAsyncTask$Status[Status.FINISHED.ordinal()] = 2;
|
||
|
} catch (NoSuchFieldError unused2) {
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final ModernAsyncTask<Params, Progress, Result> executeOnExecutor(Executor executor, Params... paramsArr) {
|
||
|
if (this.mStatus != Status.PENDING) {
|
||
|
int i = AnonymousClass4.$SwitchMap$androidx$loader$content$ModernAsyncTask$Status[this.mStatus.ordinal()];
|
||
|
if (i == 1) {
|
||
|
throw new IllegalStateException("Cannot execute task: the task is already running.");
|
||
|
}
|
||
|
if (i == 2) {
|
||
|
throw new IllegalStateException("Cannot execute task: the task has already been executed (a task can be executed only once)");
|
||
|
}
|
||
|
throw new IllegalStateException("We should never reach this state");
|
||
|
}
|
||
|
this.mStatus = Status.RUNNING;
|
||
|
onPreExecute();
|
||
|
this.mWorker.mParams = paramsArr;
|
||
|
executor.execute(this.mFuture);
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public static void execute(Runnable runnable) {
|
||
|
sDefaultExecutor.execute(runnable);
|
||
|
}
|
||
|
|
||
|
protected final void publishProgress(Progress... progressArr) {
|
||
|
if (isCancelled()) {
|
||
|
return;
|
||
|
}
|
||
|
getHandler().obtainMessage(2, new AsyncTaskResult(this, progressArr)).sendToTarget();
|
||
|
}
|
||
|
|
||
|
void finish(Result result) {
|
||
|
if (isCancelled()) {
|
||
|
onCancelled(result);
|
||
|
} else {
|
||
|
onPostExecute(result);
|
||
|
}
|
||
|
this.mStatus = Status.FINISHED;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
/* loaded from: classes2.dex */
|
||
|
public static class InternalHandler extends Handler {
|
||
|
InternalHandler() {
|
||
|
super(Looper.getMainLooper());
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Multi-variable type inference failed */
|
||
|
@Override // android.os.Handler
|
||
|
public void handleMessage(Message message) {
|
||
|
AsyncTaskResult asyncTaskResult = (AsyncTaskResult) message.obj;
|
||
|
int i = message.what;
|
||
|
if (i == 1) {
|
||
|
asyncTaskResult.mTask.finish(asyncTaskResult.mData[0]);
|
||
|
} else {
|
||
|
if (i != 2) {
|
||
|
return;
|
||
|
}
|
||
|
asyncTaskResult.mTask.onProgressUpdate(asyncTaskResult.mData);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
/* loaded from: classes2.dex */
|
||
|
public static abstract class WorkerRunnable<Params, Result> implements Callable<Result> {
|
||
|
Params[] mParams;
|
||
|
|
||
|
WorkerRunnable() {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: private */
|
||
|
/* loaded from: classes2.dex */
|
||
|
public static class AsyncTaskResult<Data> {
|
||
|
final Data[] mData;
|
||
|
final ModernAsyncTask mTask;
|
||
|
|
||
|
AsyncTaskResult(ModernAsyncTask modernAsyncTask, Data... dataArr) {
|
||
|
this.mTask = modernAsyncTask;
|
||
|
this.mData = dataArr;
|
||
|
}
|
||
|
}
|
||
|
}
|