summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/aconfig/systemui.aconfig10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java17
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java1
3 files changed, 26 insertions, 2 deletions
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 7f229fb65d4c..f2a71050a72c 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -469,3 +469,13 @@ flag {
purpose: PURPOSE_BUGFIX
}
}
+
+flag {
+ name: "register_zen_mode_content_observer_background"
+ namespace: "systemui"
+ description: "Decide whether to register zen mode content observers in the background thread."
+ bug: "324515627"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
index df210b073e77..600005b97610 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java
@@ -16,6 +16,8 @@
package com.android.systemui.statusbar.policy;
+import static com.android.systemui.Flags.registerZenModeContentObserverBackground;
+
import android.app.AlarmManager;
import android.app.Flags;
import android.app.NotificationManager;
@@ -45,6 +47,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
+import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.settings.UserTracker;
@@ -104,6 +107,7 @@ public class ZenModeControllerImpl implements ZenModeController, Dumpable {
public ZenModeControllerImpl(
Context context,
@Main Handler handler,
+ @Background Handler bgHandler,
BroadcastDispatcher broadcastDispatcher,
DumpManager dumpManager,
GlobalSettings globalSettings,
@@ -134,9 +138,18 @@ public class ZenModeControllerImpl implements ZenModeController, Dumpable {
}
};
mNoMan = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- globalSettings.registerContentObserver(Global.ZEN_MODE, modeContentObserver);
+ if (registerZenModeContentObserverBackground()) {
+ bgHandler.post(() -> {
+ globalSettings.registerContentObserver(Global.ZEN_MODE, modeContentObserver);
+ globalSettings.registerContentObserver(Global.ZEN_MODE_CONFIG_ETAG,
+ configContentObserver);
+ });
+ } else {
+ globalSettings.registerContentObserver(Global.ZEN_MODE, modeContentObserver);
+ globalSettings.registerContentObserver(Global.ZEN_MODE_CONFIG_ETAG,
+ configContentObserver);
+ }
updateZenMode(getModeSettingValueFromProvider());
- globalSettings.registerContentObserver(Global.ZEN_MODE_CONFIG_ETAG, configContentObserver);
updateZenModeConfig();
updateConsolidatedNotificationPolicy();
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java
index f1a2c281595d..ddd29c3f2803 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java
@@ -79,6 +79,7 @@ public class ZenModeControllerImplTest extends SysuiTestCase {
mController = new ZenModeControllerImpl(
mContext,
Handler.createAsync(TestableLooper.get(this).getLooper()),
+ Handler.createAsync(TestableLooper.get(this).getLooper()),
mBroadcastDispatcher,
mDumpManager,
mGlobalSettings,