From 76cf622e9bd23e0bdb87bc8874ec5ca16dea30aa Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Wed, 12 May 2021 23:56:13 +0800 Subject: [PATCH] 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 --- .../StorageUsageProgressBarPreferenceController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java index 6b06dafb71b..cfee6a435b7 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java @@ -47,6 +47,7 @@ public class StorageUsageProgressBarPreferenceController extends BasePreferenceC long mTotalBytes; private UsageProgressBarPreference mUsageProgressBarPreference; private StorageEntry mStorageEntry; + boolean mIsUpdateStateFromSelectedStorageEntry; public StorageUsageProgressBarPreferenceController(Context context, String key) { super(context, key); @@ -68,7 +69,6 @@ public class StorageUsageProgressBarPreferenceController extends BasePreferenceC @Override public void displayPreference(PreferenceScreen screen) { mUsageProgressBarPreference = screen.findPreference(getPreferenceKey()); - getStorageStatsAndUpdateUi(); } private void getStorageStatsAndUpdateUi() { @@ -101,12 +101,18 @@ public class StorageUsageProgressBarPreferenceController extends BasePreferenceC 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(