If two groups are posted to settings, remove old group and log.

Bug: 62136650
Test: manual: set debugger in asynctask at line 110 to force
race condition, triggered task twice then released both.
also ran existing tests with no new failures.
Change-Id: I8508fe9f191ca6cd0bb6dfbc62d884420d3fd747
This commit is contained in:
Alison Cichowlas
2017-06-06 15:06:14 -04:00
parent 11465af11e
commit 130a028f33

View File

@@ -51,7 +51,6 @@ import com.android.settings.widget.MasterSwitchPreference;
import com.android.settings.widget.SwitchBar; import com.android.settings.widget.SwitchBar;
import com.android.settingslib.RestrictedSwitchPreference; import com.android.settingslib.RestrictedSwitchPreference;
import java.text.Collator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@@ -147,6 +146,15 @@ public class AppNotificationSettings extends NotificationSettingsBase {
} }
private void populateChannelList() { private void populateChannelList() {
if (!mChannelGroups.isEmpty()) {
// If there's anything in mChannelGroups, we've called populateChannelList twice.
// Clear out existing channels and log.
Log.w(TAG, "Notification channel group posted twice to settings - old size " +
mChannelGroups.size() + ", new size " + mChannelGroupList.size());
for (Preference p : mChannelGroups) {
getPreferenceScreen().removePreference(p);
}
}
if (mChannelGroupList.isEmpty()) { if (mChannelGroupList.isEmpty()) {
PreferenceCategory groupCategory = new PreferenceCategory(getPrefContext()); PreferenceCategory groupCategory = new PreferenceCategory(getPrefContext());
groupCategory.setTitle(R.string.notification_channels); groupCategory.setTitle(R.string.notification_channels);