OSDN Git Service

Query calendar in a background thread.
authorJulia Reynolds <juliacr@google.com>
Wed, 9 Mar 2016 15:41:00 +0000 (10:41 -0500)
committerJulia Reynolds <juliacr@google.com>
Wed, 9 Mar 2016 17:32:03 +0000 (12:32 -0500)
Bug: 24667663
Change-Id: I87da42e9d0a12629d58cc4b859ae1ad7ab5f3121

services/core/java/com/android/server/notification/EventConditionProvider.java
services/core/java/com/android/server/notification/ZenModeConditions.java

index ab3cb83..b13fec1 100644 (file)
@@ -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<Uri> mSubscriptions = new ArraySet<Uri>();
     private final SparseArray<CalendarTracker> 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
index 9cdece5..0945065 100644 (file)
@@ -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);
     }