В тесте Composable Action является переменной типа mutablestateof, инициализированной с помощью :: a . Затем, в запуске, действие изменяется на :: b .
Однако, потому что запуск inteckect (unit) по умолчанию связан с клавиш модуля в составлении это означает, что он запускает, когда композитный впервые выполняется, и во время этого процесса он отражает ссылку на выполнение указанного действия . В результате изменения в действии не сразу отражаются в executeInlonglambda Поскольку действие было захвачено составлением во время начальной подвески.
После задержки В запуск запуск завершается, хотя действие было обновлено по отношению к :: B , executeInlonglambda по -прежнему выполняет первоначально захваченное действие (т.е. :: A ) из первого рендера, SO :: A выполняется в конце. Я знаю, что это должно быть решено с использованием ummorsupdatedState () , я сомневаюсь, что я создал лямбду, которая захватывает состояние (то есть счетчика ) и передавать лямбда как action2 для выполнения executeInlongLivelambda Полем Когда счетчик меняется, лямбда, которая захватывает счетчик, должна воссоздана. Почему он ведет себя иначе, чем Action1 ? Разве печатный счетчик не должен быть 0? Может ли кто-нибудь подробно объяснить, что происходит?fun a() {
Log.e("MainActivity", "a")
}
fun b() {
Log.e("MainActivity", "b")
}
@Composable
fun Test() {
var action by remember { mutableStateOf(::a) }
var counter by remember { mutableIntStateOf(0) }
LaunchedEffect(Unit) {
delay(1000)
action = ::b
counter++
}
ExecuteInLongLiveLambda(
action1 = action,
action2 = {
// read State
Log.e("MainActivity", "counter = $counter")
}
)
}
@Composable
fun ExecuteInLongLiveLambda(
action1: () -> Unit,
action2: () -> Unit,
) {
LaunchedEffect(Unit) {
delay(2000)
action1() // a
action2() // counter = 1
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ved-lambda
JetPack сочиняйте захват состояния в долгоживущем лямбде ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
JetPack сочиняйте ленивые удары колонны, чтобы удалить анимацию, не заканчивается гладко
Anonymous » » в форуме Android - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
JetPack сочиняйте вложенные графики, нажимая и кнопку Topappbar Up поведение
Anonymous » » в форуме Android - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-