Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
338 of 502 menu
◀ ▶

Метод removeObserver

Метод removeObserver класса Lifecycle отменяет регистрацию, сделанную через addObserver. После removeObserver наблюдатель больше не получит события. В Compose remove обычно вызывают в onDispose у DisposableEffect.

Синтаксис

lifecycle.removeObserver(observer)

Параметры

Параметр Описание
observer Тот же объект, который передавали в addObserver.

Пример

Давайте снимем observer при уходе composable:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.compose.LocalLifecycleOwner class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var show by remember { mutableStateOf(true) } if (show) { ObservedLabel() } else { Text(text = "abcde") } Button(onClick = { show = false }) { Text(text = "12345") } } } } @androidx.compose.runtime.Composable private fun ObservedLabel() { val owner = LocalLifecycleOwner.current var text by remember { mutableStateOf("abcde") } val observer = remember { LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_RESUME) { text = "12345" } } } DisposableEffect(owner) { owner.lifecycle.addObserver(observer) onDispose { owner.lifecycle.removeObserver(observer) } } Text(text = text) }

На экране при скрытии ObservedLabel removeObserver отключит колбэки.

Смотрите также

  • метод addObserver,
    которым вешали observer
  • функция DisposableEffect,
    где вызывают removeObserver
  • класс Lifecycle,
    с которого снимают наблюдателя
  • функция repeatOnLifecycle,
    которая сама управляет подпиской
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить