CrackMe.apk
Download file
package androidx.core.provider;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import java.util.concurrent.Callable;
@Deprecated
public class SelfDestructiveThread {
private static final int MSG_DESTRUCTION = 0;
private static final int MSG_INVOKE_RUNNABLE = 1;
private Handler.Callback mCallback = new Handler.Callback() {
public boolean handleMessage(Message message) {
int i = message.what;
if (i == 0) {
SelfDestructiveThread.this.onDestruction();
return true;
} else if (i != 1) {
return true;
} else {
SelfDestructiveThread.this.onInvokeRunnable((Runnable) message.obj);
return true;
}
}
};
private final int mDestructAfterMillisec;
private int mGeneration;
private Handler mHandler;
private final Object mLock = new Object();
private final int mPriority;
private HandlerThread mThread;
private final String mThreadName;
public interface ReplyCallback<T> {
void onReply(T t);
}
public SelfDestructiveThread(String str, int i, int i2) {
this.mThreadName = str;
this.mPriority = i;
this.mDestructAfterMillisec = i2;
this.mGeneration = 0;
}
public boolean isRunning() {
boolean z;
synchronized (this.mLock) {
z = this.mThread != null;
}
return z;
}
public int getGeneration() {
int i;
synchronized (this.mLock) {
i = this.mGeneration;
}
return i;
}
private void post(Runnable runnable) {
synchronized (this.mLock) {
if (this.mThread == null) {
HandlerThread handlerThread = new HandlerThread(this.mThreadName, this.mPriority);
this.mThread = handlerThread;
handlerThread.start();
this.mHandler = new Handler(this.mThread.getLooper(), this.mCallback);
this.mGeneration++;
}
this.mHandler.removeMessages(0);
Handler handler = this.mHandler;
handler.sendMessage(handler.obtainMessage(1, runnable));
}
}
public <T> void postAndReply(final Callable<T> callable, final ReplyCallback<T> replyCallback) {
final Handler create = CalleeHandler.create();
post(new Runnable() {
public void run() {
final Object obj;
try {
obj = callable.call();
} catch (Exception unused) {
obj = null;
}
create.post(new Runnable() {
public void run() {
replyCallback.onReply(obj);
}
});
}
});
}
/* JADX WARNING: Can't wrap try/catch for region: R(5:9|10|11|12|(4:25|14|15|16)(1:17)) */
/* JADX WARNING: Missing exception handler attribute for start block: B:11:0x003f */
/* JADX WARNING: Removed duplicated region for block: B:17:0x004d */
/* JADX WARNING: Removed duplicated region for block: B:25:0x0045 A[SYNTHETIC] */
/* Code decompiled incorrectly, please refer to instructions dump. */
public <T> T postAndWait(java.util.concurrent.Callable<T> r13, int r14) throws java.lang.InterruptedException {
/*
r12 = this;
java.util.concurrent.locks.ReentrantLock r7 = new java.util.concurrent.locks.ReentrantLock
r7.<init>()
java.util.concurrent.locks.Condition r8 = r7.newCondition()
java.util.concurrent.atomic.AtomicReference r9 = new java.util.concurrent.atomic.AtomicReference
r9.<init>()
java.util.concurrent.atomic.AtomicBoolean r10 = new java.util.concurrent.atomic.AtomicBoolean
r0 = 1
r10.<init>(r0)
androidx.core.provider.SelfDestructiveThread$3 r11 = new androidx.core.provider.SelfDestructiveThread$3
r0 = r11
r1 = r12
r2 = r9
r3 = r13
r4 = r7
r5 = r10
r6 = r8
r0.<init>(r2, r3, r4, r5, r6)
r12.post(r11)
r7.lock()
boolean r13 = r10.get() // Catch:{ all -> 0x005d }
if (r13 != 0) goto L_0x0034
java.lang.Object r13 = r9.get() // Catch:{ all -> 0x005d }
r7.unlock()
return r13
L_0x0034:
java.util.concurrent.TimeUnit r13 = java.util.concurrent.TimeUnit.MILLISECONDS // Catch:{ all -> 0x005d }
long r0 = (long) r14 // Catch:{ all -> 0x005d }
long r13 = r13.toNanos(r0) // Catch:{ all -> 0x005d }
L_0x003b:
long r13 = r8.awaitNanos(r13) // Catch:{ InterruptedException -> 0x003f }
L_0x003f:
boolean r0 = r10.get() // Catch:{ all -> 0x005d }
if (r0 != 0) goto L_0x004d
java.lang.Object r13 = r9.get() // Catch:{ all -> 0x005d }
r7.unlock()
return r13
L_0x004d:
r0 = 0
int r2 = (r13 > r0 ? 1 : (r13 == r0 ? 0 : -1))
if (r2 <= 0) goto L_0x0054
goto L_0x003b
L_0x0054:
java.lang.InterruptedException r13 = new java.lang.InterruptedException // Catch:{ all -> 0x005d }
java.lang.String r14 = "timeout"
r13.<init>(r14) // Catch:{ all -> 0x005d }
throw r13 // Catch:{ all -> 0x005d }
L_0x005d:
r13 = move-exception
r7.unlock()
throw r13
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.core.provider.SelfDestructiveThread.postAndWait(java.util.concurrent.Callable, int):java.lang.Object");
}
/* access modifiers changed from: package-private */
public void onInvokeRunnable(Runnable runnable) {
runnable.run();
synchronized (this.mLock) {
this.mHandler.removeMessages(0);
Handler handler = this.mHandler;
handler.sendMessageDelayed(handler.obtainMessage(0), (long) this.mDestructAfterMillisec);
}
}
/* access modifiers changed from: package-private */
public void onDestruction() {
synchronized (this.mLock) {
if (!this.mHandler.hasMessages(1)) {
this.mThread.quit();
this.mThread = null;
this.mHandler = null;
}
}
}
}
Download file