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
This commit is contained in:
Arc Wang
2021-05-12 23:56:13 +08:00
parent e966debfd5
commit 76cf622e9b

View File

@@ -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(