diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppStorageSize.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppStorageSize.kt index 5fc1972fc878f..626c913ac9e6b 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppStorageSize.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppStorageSize.kt @@ -22,25 +22,27 @@ import android.text.format.Formatter import android.util.Log import androidx.compose.runtime.Composable import androidx.compose.runtime.State -import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember import androidx.compose.ui.platform.LocalContext +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.android.settingslib.spaprivileged.framework.common.storageStatsManager import com.android.settingslib.spaprivileged.framework.compose.placeholder import com.android.settingslib.spaprivileged.model.app.userHandle import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.flowOn private const val TAG = "AppStorageSize" @Composable fun ApplicationInfo.getStorageSize(): State { val context = LocalContext.current - return produceState(initialValue = placeholder()) { - withContext(Dispatchers.IO) { + return remember { + flow { val sizeBytes = calculateSizeBytes(context) - value = if (sizeBytes != null) Formatter.formatFileSize(context, sizeBytes) else "" - } - } + this.emit(if (sizeBytes != null) Formatter.formatFileSize(context, sizeBytes) else "") + }.flowOn(Dispatchers.IO) + }.collectAsStateWithLifecycle(initialValue = placeholder()) } fun ApplicationInfo.calculateSizeBytes(context: Context): Long? {