Мне нужно обнаружить событие ON_DESTROY на экране создания сообщения. Для этого я использую приведенный ниже код; Он вызывается дважды, но есть ли способ обнаружить его более надежно? isObserverAdded помогает мне избежать добавления нескольких наблюдателей при переходе с текущего экрана на другой экран. LaunchedEffect вызывается дважды: когда экран впервые создается и когда я перехожу к другому экрану, затем нажимаю обратно, чтобы вернуться к предыдущему экрану. LaunchedEffect вызывается снова, поэтому я завернул isObserverAdded. Есть ли более надежный способ, например использование DisposableEffect?
// Remember the observer to avoid creating multiple instances
val observer = remember {
object : LifecycleEventObserver {
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
if (event == Lifecycle.Event.ON_DESTROY) {
// Perform cleanup actions when screen is destroyed
Log.d(TAG,"Screen is destroyed")
}
}
}
}
// Remember a flag to check if the observer has been added
val isObserverAdded = remember { mutableStateOf(false) }
LaunchedEffect(key1 = lifecycleOwner.lifecycle) {
if(!isObserverAdded.value){
lifecycleOwner.lifecycle.addObserver(observer)
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... ce-navhost
Событие OnDestroy экрана создания экрана вызывается дважды | Навхост ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение