From 375035905de7932b3a34e91fc537fd7561bed6c8 Mon Sep 17 00:00:00 2001 From: Dan Zivkovic Date: Mon, 9 Mar 2015 18:26:52 -0700 Subject: [PATCH] Kill+restart tasks before/after decoder init. Bug 19625976. Change-Id: I6d8b0d2b0a77ccda1bfc914501cf568b92862980 --- .../inputmethod/latin/utils/StatsUtilsManager.java | 7 ++++++- .../inputmethod/latin/utils/ExecutorUtils.java | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java b/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java index 063bc89d0..cd42f50c7 100644 --- a/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java +++ b/java-overridable/src/com/android/inputmethod/latin/utils/StatsUtilsManager.java @@ -26,12 +26,17 @@ import com.android.inputmethod.latin.settings.SettingsValues; public class StatsUtilsManager { private static final StatsUtilsManager sInstance = new StatsUtilsManager(); + private static StatsUtilsManager sTestInstance = null; /** * @return the singleton instance of {@link StatsUtilsManager}. */ public static StatsUtilsManager getInstance() { - return sInstance; + return sTestInstance != null ? sTestInstance : sInstance; + } + + public static void setTestInstance(final StatsUtilsManager testInstance) { + sTestInstance = testInstance; } public void onCreate(final Context context, final DictionaryFacilitator dictionaryFacilitator) { diff --git a/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java index b04a820aa..3a6c60b15 100644 --- a/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java +++ b/java/src/com/android/inputmethod/latin/utils/ExecutorUtils.java @@ -23,7 +23,6 @@ import com.android.inputmethod.annotations.UsedForTesting; import java.lang.Thread.UncaughtExceptionHandler; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; @@ -74,6 +73,16 @@ public class ExecutorUtils { return sExecutorService; } + public static void killTasks() { + getBackgroundExecutor().shutdownNow(); + try { + getBackgroundExecutor().awaitTermination(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + Log.wtf(TAG, "Failed to shut down background task."); + throw new IllegalStateException("Failed to shut down background task."); + } + } + public static Runnable chain(final Runnable... runnables) { return new RunnableChain(runnables); }