From 0a21d9d5ebd351a2783f899c3b49bfb5ee10eb38 Mon Sep 17 00:00:00 2001 From: Brian Yencho Date: Wed, 31 Mar 2021 16:07:06 -0500 Subject: [PATCH] Share ExecutorService among BridgeDelegate instances --- .../main/java/com/livefront/bridge/Bridge.java | 16 ++++++++++++++-- .../com/livefront/bridge/BridgeDelegate.java | 5 +++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/bridge/src/main/java/com/livefront/bridge/Bridge.java b/bridge/src/main/java/com/livefront/bridge/Bridge.java index ec8e92a..4d0ee1e 100644 --- a/bridge/src/main/java/com/livefront/bridge/Bridge.java +++ b/bridge/src/main/java/com/livefront/bridge/Bridge.java @@ -9,7 +9,11 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + public class Bridge { + private static final ExecutorService sExecutorService = Executors.newCachedThreadPool(); private static volatile BridgeDelegate sDelegate; @@ -41,7 +45,11 @@ public static void clear(@NonNull Object target) { public static void clearAll(@NonNull Context context) { BridgeDelegate delegate = sDelegate != null ? sDelegate - : new BridgeDelegate(context, new NoOpSavedStateHandler(), null); + : new BridgeDelegate( + context, + sExecutorService, + new NoOpSavedStateHandler(), + null); delegate.clearAll(); } @@ -83,7 +91,11 @@ private static synchronized void initializeInternal( @NonNull Context context, @NonNull SavedStateHandler savedStateHandler, @Nullable ViewSavedStateHandler viewSavedStateHandler) { - sDelegate = new BridgeDelegate(context, savedStateHandler, viewSavedStateHandler); + sDelegate = new BridgeDelegate( + context, + sExecutorService, + savedStateHandler, + viewSavedStateHandler); } /** diff --git a/bridge/src/main/java/com/livefront/bridge/BridgeDelegate.java b/bridge/src/main/java/com/livefront/bridge/BridgeDelegate.java index 7db4cb9..f8795f3 100644 --- a/bridge/src/main/java/com/livefront/bridge/BridgeDelegate.java +++ b/bridge/src/main/java/com/livefront/bridge/BridgeDelegate.java @@ -26,7 +26,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; class BridgeDelegate { @@ -44,7 +43,7 @@ class BridgeDelegate { private static final String KEY_WRAPPED_VIEW_RESULT = "wrapped-view-result"; private final DiskHandler mDiskHandler; - private final ExecutorService mExecutorService = Executors.newCachedThreadPool(); + private final ExecutorService mExecutorService; private final List mPendingWriteTasks = new CopyOnWriteArrayList<>(); private final Map mUuidBundleMap = new ConcurrentHashMap<>(); private final Map mObjectUuidMap = new WeakHashMap<>(); @@ -58,9 +57,11 @@ class BridgeDelegate { private volatile CountDownLatch mPendingWriteTasksLatch = null; BridgeDelegate(@NonNull Context context, + @NonNull ExecutorService executorService, @NonNull SavedStateHandler savedStateHandler, @Nullable ViewSavedStateHandler viewSavedStateHandler) { mSavedStateHandler = savedStateHandler; + mExecutorService = executorService; mViewSavedStateHandler = viewSavedStateHandler; mDiskHandler = new FileDiskHandler(context, mExecutorService);