pull/29/head
Mattia Iavarone 8 years ago
parent f3a14655b0
commit 700471fa29
  1. 9
      cameraview/src/main/utils/com/otaliastudios/cameraview/WorkerHandler.java

@ -13,7 +13,8 @@ import java.util.concurrent.ConcurrentHashMap;
*/ */
class WorkerHandler { class WorkerHandler {
private static ConcurrentHashMap<String, WeakReference<WorkerHandler>> sCache = new ConcurrentHashMap<>(4); private final static CameraLogger LOG = CameraLogger.create(WorkerHandler.class.getSimpleName());
private final static ConcurrentHashMap<String, WeakReference<WorkerHandler>> sCache = new ConcurrentHashMap<>(4);
public static WorkerHandler get(String name) { public static WorkerHandler get(String name) {
if (sCache.containsKey(name)) { if (sCache.containsKey(name)) {
@ -21,11 +22,15 @@ class WorkerHandler {
if (cached != null) { if (cached != null) {
HandlerThread thread = cached.mThread; HandlerThread thread = cached.mThread;
if (thread.isAlive() && !thread.isInterrupted()) { if (thread.isAlive() && !thread.isInterrupted()) {
LOG.w("get:", "Reusing cached worker handler.", name);
return cached; return cached;
} }
} }
LOG.w("get:", "Thread reference died, removing.", name);
sCache.remove(name); sCache.remove(name);
} }
LOG.i("get:", "Creating new handler.", name);
WorkerHandler handler = new WorkerHandler(name); WorkerHandler handler = new WorkerHandler(name);
sCache.put(name, new WeakReference<>(handler)); sCache.put(name, new WeakReference<>(handler));
return handler; return handler;
@ -34,7 +39,7 @@ class WorkerHandler {
private HandlerThread mThread; private HandlerThread mThread;
private Handler mHandler; private Handler mHandler;
public WorkerHandler(String name) { private WorkerHandler(String name) {
mThread = new HandlerThread(name); mThread = new HandlerThread(name);
mThread.setDaemon(true); mThread.setDaemon(true);
mThread.start(); mThread.start();

Loading…
Cancel
Save