From fa8ee797601de676883acb56bacfc6d497531879 Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Tue, 9 Oct 2018 17:48:34 -0700 Subject: [PATCH] Get the ringtone name in background thread. - to prevent anr, retrieve the current ringtone in background thread. Change-Id: I701adfa618553c03aa24719b2550ea3ee97d9bfa Fixes: 117124470 Test: make RunSettingsRoboTests --- .../notification/RingtonePreferenceControllerBase.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java index 7d5ebf13347..7b37855c6f7 100644 --- a/src/com/android/settings/notification/RingtonePreferenceControllerBase.java +++ b/src/com/android/settings/notification/RingtonePreferenceControllerBase.java @@ -25,6 +25,7 @@ import androidx.preference.Preference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.AbstractPreferenceController; +import com.android.settingslib.utils.ThreadUtils; public abstract class RingtonePreferenceControllerBase extends AbstractPreferenceController implements PreferenceControllerMixin { @@ -45,11 +46,17 @@ public abstract class RingtonePreferenceControllerBase extends AbstractPreferenc @Override public void updateState(Preference preference) { + ThreadUtils.postOnBackgroundThread(() -> updateSummary(preference)); + } + + private void updateSummary(Preference preference) { Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(mContext, getRingtoneType()); final CharSequence summary = Ringtone.getTitle( mContext, ringtoneUri, false /* followSettingsUri */, true /* allowRemote */); if (summary != null) { - preference.setSummary(summary); + ThreadUtils.postOnMainThread(() -> { + preference.setSummary(summary); + }); } }