Fix storage page slow loading issue

StorageAsyncLoader is the bottleneck. It needs to loop all installed
apps and count all apps size. Original design was waiting the
asyncLoader went back then hide the loading icon. Change the design
to hide the loading icon before asyncLoader is back.

Fixes: 138964123
Test: manual
Change-Id: I54c2efa7cf61d711145811619512d927adcee210
This commit is contained in:
Raff Tsai
2019-08-07 10:31:36 +08:00
parent b843707ef5
commit 47dcff42df

View File

@@ -66,7 +66,6 @@ public class StorageDashboardFragment extends DashboardFragment
private static final int STORAGE_JOB_ID = 0;
private static final int ICON_JOB_ID = 1;
private static final int VOLUME_SIZE_JOB_ID = 2;
private static final int OPTIONS_MENU_MIGRATE_DATA = 100;
private VolumeInfo mVolume;
private PrivateStorageInfo mStorageInfo;
@@ -139,6 +138,7 @@ public class StorageDashboardFragment extends DashboardFragment
}
private void onReceivedSizes() {
boolean stopLoading = false;
if (mStorageInfo != null) {
long privateUsedBytes = mStorageInfo.totalBytes - mStorageInfo.freeBytes;
mSummaryController.updateBytes(privateUsedBytes, mStorageInfo.totalBytes);
@@ -152,18 +152,21 @@ public class StorageDashboardFragment extends DashboardFragment
userController.setTotalSize(mStorageInfo.totalBytes);
}
}
stopLoading = true;
}
if (mAppsResult == null) {
return;
if (mAppsResult != null) {
mPreferenceController.onLoadFinished(mAppsResult, UserHandle.myUserId());
updateSecondaryUserControllers(mSecondaryUsers, mAppsResult);
stopLoading = true;
}
mPreferenceController.onLoadFinished(mAppsResult, UserHandle.myUserId());
updateSecondaryUserControllers(mSecondaryUsers, mAppsResult);
// setLoading always causes a flicker, so let's avoid doing it.
if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
setLoading(false, true);
if (stopLoading) {
if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
setLoading(false, true);
}
}
}