Remove calls that iterate on MessageQueue
Test: enable flag and then NotificationManagerServiceTest
Bug: 311051285
Flag: aconfig com.android.server.notification.notification_reduce_messagequeue_usage
Change-Id: Idf8e050fa6fc5703743dc1c920c973e1e04b9277
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 3d7a000..f3a3df6 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -9573,12 +9573,16 @@
}
private void scheduleListenerHintsChanged(int state) {
- mHandler.removeMessages(MESSAGE_LISTENER_HINTS_CHANGED);
+ if (!Flags.notificationReduceMessagequeueUsage()) {
+ mHandler.removeMessages(MESSAGE_LISTENER_HINTS_CHANGED);
+ }
mHandler.obtainMessage(MESSAGE_LISTENER_HINTS_CHANGED, state, 0).sendToTarget();
}
private void scheduleInterruptionFilterChanged(int listenerInterruptionFilter) {
- mHandler.removeMessages(MESSAGE_LISTENER_NOTIFICATION_FILTER_CHANGED);
+ if (!Flags.notificationReduceMessagequeueUsage()) {
+ mHandler.removeMessages(MESSAGE_LISTENER_NOTIFICATION_FILTER_CHANGED);
+ }
mHandler.obtainMessage(
MESSAGE_LISTENER_NOTIFICATION_FILTER_CHANGED,
listenerInterruptionFilter,
@@ -9658,15 +9662,24 @@
}
protected void scheduleSendRankingUpdate() {
- if (!hasMessages(MESSAGE_SEND_RANKING_UPDATE)) {
+ if (Flags.notificationReduceMessagequeueUsage()) {
Message m = Message.obtain(this, MESSAGE_SEND_RANKING_UPDATE);
sendMessage(m);
+ } else {
+ if (!hasMessages(MESSAGE_SEND_RANKING_UPDATE)) {
+ Message m = Message.obtain(this, MESSAGE_SEND_RANKING_UPDATE);
+ sendMessage(m);
+ }
}
}
protected void scheduleCancelNotification(CancelNotificationRunnable cancelRunnable) {
- if (!hasCallbacks(cancelRunnable)) {
+ if (Flags.notificationReduceMessagequeueUsage()) {
sendMessage(Message.obtain(this, cancelRunnable));
+ } else {
+ if (!hasCallbacks(cancelRunnable)) {
+ sendMessage(Message.obtain(this, cancelRunnable));
+ }
}
}
@@ -9700,7 +9713,9 @@
}
public void requestSort() {
- removeMessages(MESSAGE_RANKING_SORT);
+ if (!Flags.notificationReduceMessagequeueUsage()) {
+ removeMessages(MESSAGE_RANKING_SORT);
+ }
Message msg = Message.obtain();
msg.what = MESSAGE_RANKING_SORT;
sendMessage(msg);
diff --git a/services/core/java/com/android/server/notification/flags.aconfig b/services/core/java/com/android/server/notification/flags.aconfig
index 8e79922a..49db7fc 100644
--- a/services/core/java/com/android/server/notification/flags.aconfig
+++ b/services/core/java/com/android/server/notification/flags.aconfig
@@ -50,3 +50,10 @@
# Referenced in WM where WM starts before DeviceConfig
is_fixed_read_only: true
}
+
+flag {
+ name: "notification_reduce_messagequeue_usage"
+ namespace: "systemui"
+ description: "When this flag is on, NMS will no longer call removeMessage() and hasCallbacks() on Handler"
+ bug: "311051285"
+}
\ No newline at end of file