From 7034caf2944962e67291f3e88888c6143c19161a Mon Sep 17 00:00:00 2001 From: Julia Reynolds Date: Wed, 9 Mar 2016 10:41:00 -0500 Subject: [PATCH] Query calendar in a background thread. Bug: 24667663 Change-Id: I87da42e9d0a12629d58cc4b859ae1ad7ab5f3121 --- .../server/notification/EventConditionProvider.java | 9 +++++++-- .../android/server/notification/ZenModeConditions.java | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/notification/EventConditionProvider.java b/services/core/java/com/android/server/notification/EventConditionProvider.java index ab3cb8326b29b..b13fec19cc66c 100644 --- a/services/core/java/com/android/server/notification/EventConditionProvider.java +++ b/services/core/java/com/android/server/notification/EventConditionProvider.java @@ -26,7 +26,9 @@ import android.content.IntentFilter; import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; import android.os.Handler; +import android.os.HandlerThread; import android.os.Looper; +import android.os.Process; import android.os.UserHandle; import android.os.UserManager; import android.service.notification.Condition; @@ -63,15 +65,18 @@ public class EventConditionProvider extends SystemConditionProviderService { private final ArraySet mSubscriptions = new ArraySet(); private final SparseArray mTrackers = new SparseArray<>(); private final Handler mWorker; + private final HandlerThread mThread; private boolean mConnected; private boolean mRegistered; private boolean mBootComplete; // don't hammer the calendar provider until boot completes. private long mNextAlarmTime; - public EventConditionProvider(Looper worker) { + public EventConditionProvider() { if (DEBUG) Slog.d(TAG, "new " + SIMPLE_NAME + "()"); - mWorker = new Handler(worker); + mThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND); + mThread.start(); + mWorker = new Handler(mThread.getLooper()); } @Override diff --git a/services/core/java/com/android/server/notification/ZenModeConditions.java b/services/core/java/com/android/server/notification/ZenModeConditions.java index 9cdece525bb35..0945065d62f7e 100644 --- a/services/core/java/com/android/server/notification/ZenModeConditions.java +++ b/services/core/java/com/android/server/notification/ZenModeConditions.java @@ -50,7 +50,7 @@ public class ZenModeConditions implements ConditionProviders.Callback { mConditionProviders.addSystemProvider(new ScheduleConditionProvider()); } if (mConditionProviders.isSystemProviderEnabled(ZenModeConfig.EVENT_PATH)) { - mConditionProviders.addSystemProvider(new EventConditionProvider(helper.getLooper())); + mConditionProviders.addSystemProvider(new EventConditionProvider()); } mConditionProviders.setCallback(this); }