Почему собранное значение StateFlow из ViewModel не обновляется синхронно?Android

Форум для тех, кто программирует под Android
Anonymous
Почему собранное значение StateFlow из ViewModel не обновляется синхронно?

Сообщение Anonymous »

Код: Выделить всё

Composable
код:

Код: Выделить всё

val testNumber by viewModel.testNumber.collectAsStateWithLifecycle()
LaunchedEffect(Unit) {
viewModel.changeTestNumberValue()
Log.d("TestNumber", "Test number in Composable = $testNumber")
}

Код: Выделить всё

ViewModel
код:

Код: Выделить всё

private val _testNumber = MutableStateFlow(0)
val testNumber = _testNumber.asStateFlow()

fun changeTestNumberValue() {
_testNumber.value = 1
Log.d("TestNumber", "Test number in ViewModel = ${_testNumber.value}")
}
Я ожидал, что эти два журнала (в модели просмотра и в компонуемом) будут записываться с номером теста = 1. Но это фактическое напечатанное значение:

Номер теста в ViewModel = 1

Номер теста в Composable = 0

Я знаю, что значение testNumber со временем будет обновлено, но я не понимаю, почему это не синхронно. Или вот как работает StateFlow (собирать асинхронно) ??

Подробнее здесь: https://stackoverflow.com/questions/789 ... chronously

Вернуться в «Android»