CrackMe.apk
Download file
package bolts;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
final class AndroidExecutors {
static final int CORE_POOL_SIZE;
private static final int CPU_COUNT;
private static final AndroidExecutors INSTANCE = new AndroidExecutors();
static final long KEEP_ALIVE_TIME = 1;
static final int MAX_POOL_SIZE;
private final Executor uiThread = new UIThreadExecutor();
static {
int availableProcessors = Runtime.getRuntime().availableProcessors();
CPU_COUNT = availableProcessors;
CORE_POOL_SIZE = availableProcessors + 1;
MAX_POOL_SIZE = (availableProcessors * 2) + 1;
}
private AndroidExecutors() {
}
public static ExecutorService newCachedThreadPool() {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, 1, TimeUnit.SECONDS, new LinkedBlockingQueue());
allowCoreThreadTimeout(threadPoolExecutor, true);
return threadPoolExecutor;
}
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) {
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE, 1, TimeUnit.SECONDS, new LinkedBlockingQueue(), threadFactory);
allowCoreThreadTimeout(threadPoolExecutor, true);
return threadPoolExecutor;
}
public static void allowCoreThreadTimeout(ThreadPoolExecutor threadPoolExecutor, boolean z) {
if (Build.VERSION.SDK_INT >= 9) {
threadPoolExecutor.allowCoreThreadTimeOut(z);
}
}
public static Executor uiThread() {
return INSTANCE.uiThread;
}
private static class UIThreadExecutor implements Executor {
private UIThreadExecutor() {
}
public void execute(Runnable runnable) {
new Handler(Looper.getMainLooper()).post(runnable);
}
}
}
Download file