Потокобезопасность snapshotFlow в Jetpack ComposeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Потокобезопасность snapshotFlow в Jetpack Compose

Сообщение Anonymous »

Я прохожу курс «Расширенное состояние и побочные эффекты в Jetpack Compose», и в конце этой главы у меня есть этот код.
@Composable
fun ToDestinationUserInput(onToDestinationChanged: (String) -> Unit) {
val editableUserInputState = rememberEditableUserInputState(hint = "Choose Destination")

...

val currentOnDestinationChanged by rememberUpdatedState(onToDestinationChanged)
LaunchedEffect(editableUserInputState) {
snapshotFlow { editableUserInputState.text }
.filter { !editableUserInputState.isHint }
.collect {
currentOnDestinationChanged(editableUserInputState.text)
}
}
}

и редактируемый UserInputState выглядит следующим образом:
class EditableUserInputState(private val hint: String, initialText: String) {
var text by mutableStateOf(initialText)

val isHint: Boolean
get() = text == hint

...
}

Правда ли, что после первой из двух следующих строк какой-то другой поток может изменить editableUserInputState.text и часть фильтра проверит обновленное значение вместо одного мы попали в первую очередь?
snapshotFlow { editableUserInputState.text }
.filter { !editableUserInputState.isHint }


Подробнее здесь: https://stackoverflow.com/questions/792 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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