Kotlin Adept Notes
2K subscribers
67 photos
10 videos
113 links
Канал о разработке на Kotlin и обо всем, что с ним связано
По всем вопросам и рекламе: @ajiekcx
Download Telegram
Как подружить LifecycleOwner и Decompose

Некоторые API в Jetpack библиотеках принимают в качестве параметра LifecycleOwner, например, так сделано в CameraX. Однако если в вашем проекте используется Decompose, и вы используете LocalLifecycleOwner для получения текущего значения в Composable функции, то жизненный цикл будет работать некорректно: он будет соответствовать жизненному циклу Activity или Fragment, так как Decompose нигде не переопределяет этот CompositionLocal и использует собственный жизненный цикл из библиотеки Essenty.

Чтобы исправить эту проблему, необходимо сконвертировать LifecycleOwner из Decompose в его аналог из Jetpack. Однако из коробки пока что такого адаптера нет, и придётся написать его самостоятельно, по аналогии с конвертацией ЖЦ в Essenty.

В версии Decompose 3.4.0 эта проблема будет решаться проще: появится JetpackComponentContext, как отдельная зависимость, и можно будет сразу получить нужный lifecycle прямо из компонента.

Поэтому будьте внимательны при использовании CompositionLocal для работы с жизненным циклом, если навигация в проекте построена на Decompose.

#Decompose #Lifecycle
👍161