Событие OnDestroy экрана создания экрана вызывается дважды | НавхостAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Событие OnDestroy экрана создания экрана вызывается дважды | Навхост

Сообщение Anonymous »

Мне нужно обнаружить событие 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
Ответить

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

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

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

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

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