Improve Settings launch performance
am: 496d3f6f9c
Change-Id: I5256fa0c04af07108b76cf21e9558b03d499e883
diff --git a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
index c6fc23b..fdc5feb 100644
--- a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java
@@ -20,10 +20,13 @@
import android.os.storage.StorageManager;
import android.text.format.Formatter;
+import androidx.preference.Preference;
+
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
+import com.android.settingslib.utils.ThreadUtils;
import java.text.NumberFormat;
@@ -44,14 +47,22 @@
}
@Override
- public CharSequence getSummary() {
- // TODO: Register listener.
- final NumberFormat percentageFormat = NumberFormat.getPercentInstance();
- final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo(
- mStorageManagerVolumeProvider);
- double privateUsedBytes = info.totalBytes - info.freeBytes;
- return mContext.getString(R.string.storage_summary,
- percentageFormat.format(privateUsedBytes / info.totalBytes),
- Formatter.formatFileSize(mContext, info.freeBytes));
+ protected void refreshSummary(Preference preference) {
+ if (preference == null) {
+ return;
+ }
+
+ ThreadUtils.postOnBackgroundThread(() -> {
+ final NumberFormat percentageFormat = NumberFormat.getPercentInstance();
+ final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo(
+ mStorageManagerVolumeProvider);
+ final double privateUsedBytes = info.totalBytes - info.freeBytes;
+
+ ThreadUtils.postOnMainThread(() -> {
+ preference.setSummary(mContext.getString(R.string.storage_summary,
+ percentageFormat.format(privateUsedBytes / info.totalBytes),
+ Formatter.formatFileSize(mContext, info.freeBytes)));
+ });
+ });
}
}