Fix Storage Settings progress bar summary jank problem
Only updates progress bar summary for a selected StorageEntry.
(Ignore updateState callback from DashboardFragment)
Bug: 187145219
Test: manual visual
Change-Id: I4a760ae6a0921c99348c0fce54251b2667bf29ae
diff --git a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java
index 6b06daf..cfee6a4 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java
@@ -47,6 +47,7 @@
long mTotalBytes;
private UsageProgressBarPreference mUsageProgressBarPreference;
private StorageEntry mStorageEntry;
+ boolean mIsUpdateStateFromSelectedStorageEntry;
public StorageUsageProgressBarPreferenceController(Context context, String key) {
super(context, key);
@@ -68,7 +69,6 @@
@Override
public void displayPreference(PreferenceScreen screen) {
mUsageProgressBarPreference = screen.findPreference(getPreferenceKey());
- getStorageStatsAndUpdateUi();
}
private void getStorageStatsAndUpdateUi() {
@@ -101,12 +101,18 @@
if (mUsageProgressBarPreference == null) {
return;
}
+ mIsUpdateStateFromSelectedStorageEntry = true;
ThreadUtils.postOnMainThread(() -> updateState(mUsageProgressBarPreference));
});
}
@Override
public void updateState(Preference preference) {
+ if (!mIsUpdateStateFromSelectedStorageEntry) {
+ // Returns here to avoid jank by unnecessary UI update.
+ return;
+ }
+ mIsUpdateStateFromSelectedStorageEntry = false;
mUsageProgressBarPreference.setUsageSummary(
getStorageSummary(R.string.storage_usage_summary, mUsedBytes));
mUsageProgressBarPreference.setTotalSummary(