Cache summary text to avoid flickering

Bug: 231927706
Test: build, flash, run unit test, then test manually.
Change-Id: Ia0585302c5cf86cd6035315fa750c71b9df55237
This commit is contained in:
Lifu Tang
2022-05-11 14:49:19 -07:00
parent 695a47e469
commit f29a071fca
2 changed files with 26 additions and 16 deletions

View File

@@ -31,9 +31,9 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
private static final IntentFilter INTENT_FILTER_LOCATION_MODE_CHANGED =
new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
private final LocationManager mLocationManager;
/** Total number of apps that has location permission. */
private int mNumTotal = -1;
private int mNumTotalLoading = 0;
/** Summary text. */
private static String sSummary = null;
private BroadcastReceiver mReceiver;
private Preference mPreference;
private AtomicInteger loadingInProgress = new AtomicInteger(0);
@@ -51,12 +51,11 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
@Override
public CharSequence getSummary() {
if (mLocationManager.isLocationEnabled()) {
if (mNumTotal == -1) {
return mContext.getString(R.string.location_settings_loading_app_permission_stats);
if (sSummary == null) {
sSummary = mContext.getString(
R.string.location_settings_loading_app_permission_stats);
}
return mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on,
mNumTotal, mNumTotal);
return sSummary;
} else {
return mContext.getString(R.string.location_settings_summary_location_off);
}
@@ -64,7 +63,8 @@ public class TopLevelLocationPreferenceController extends BasePreferenceControll
@VisibleForTesting
void setLocationAppCount(int numApps) {
mNumTotal = numApps;
sSummary = mContext.getResources().getQuantityString(
R.plurals.location_settings_summary_location_on, numApps, numApps);
refreshSummary(mPreference);
}