package cm.android.thread;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Process;
import java.util.Locale;
public final class Background {
private static final Logger logger = LoggerFactory.getLogger("Background");
private HandlerThread thread;
private AsyncHandler handler;
public Background() {
}
private static String generateTag(StackTraceElement caller) {
String tag = "%s:%s:%d";
tag = String.format(Locale.getDefault(), tag, caller.getFileName(), caller.getMethodName(),
caller.getLineNumber());
return tag;
}
public synchronized void init() {
// StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3];
thread = new HandlerThread("Background", Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
handler = new AsyncHandler(thread.getLooper());
logger.info("init");
}
public synchronized void deInit() {
logger.info("deInit");
handler.exit();
thread.quit();
thread = null;
handler = null;
}
public synchronized Looper getLooper() {
if (thread == null) {
logger.error("sThread = null:return Looper.getMainLooper()");
return Looper.getMainLooper();
}
return thread.getLooper();
}
public synchronized android.os.Handler getHandler() {
if (thread == null) {
return new android.os.Handler();
}
return handler.get();
}
}