From 857dfe131b4c1d67e5e7a000156b60bd5b7f76f1 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 22 Jan 2021 09:59:05 -0500 Subject: [PATCH] Don't iterate channel list in bgthread To avoid a ConcurrentModificationException Fixes: 173674911 Test: manual Change-Id: If35c6f66a2cfae7ee4a6f8e83dd70aa5877f8362 --- .../app/AppChannelsBypassingDndPreferenceController.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java index 684a27a8ae8..297bfdb97bb 100644 --- a/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java +++ b/src/com/android/settings/notification/app/AppChannelsBypassingDndPreferenceController.java @@ -59,7 +59,7 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre private RestrictedSwitchPreference mAllNotificationsToggle; private PreferenceCategory mPreferenceCategory; - private final List mChannels = new ArrayList<>(); + private List mChannels = new ArrayList<>(); public AppChannelsBypassingDndPreferenceController( Context context, @@ -126,17 +126,18 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre new AsyncTask() { @Override protected Void doInBackground(Void... unused) { + List newChannelList = new ArrayList<>(); List mChannelGroupList = mBackend.getGroups(mAppRow.pkg, mAppRow.uid).getList(); - mChannels.clear(); for (NotificationChannelGroup channelGroup : mChannelGroupList) { for (NotificationChannel channel : channelGroup.getChannels()) { if (!isConversation(channel)) { - mChannels.add(channel); + newChannelList.add(channel); } } } - Collections.sort(mChannels, CHANNEL_COMPARATOR); + Collections.sort(newChannelList, CHANNEL_COMPARATOR); + mChannels = newChannelList; return null; }