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

Класс Lifecycle

Класс Lifecycle хранит текущий этап State и список наблюдателей. Владелец цикла реализует LifecycleOwner и отдаёт lifecycle. Подписаться помогают методы addObserver и removeObserver.

Синтаксис

val lifecycle = owner.lifecycle

Методы

Метод Описание
addObserver Вешает наблюдателя на события цикла.
removeObserver Снимает ранее добавленного наблюдателя.

Пример

Давайте сменим текст при ON_RESUME:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text 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 class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var text by remember { mutableStateOf("abcde") } val observer = remember { LifecycleEventObserver { _, event -> if (event == Lifecycle.Event.ON_RESUME) { text = "12345" } } } DisposableEffectForLifecycle( lifecycle = lifecycle, observer = observer, ) Text(text = text) } } } @androidx.compose.runtime.Composable private fun DisposableEffectForLifecycle( lifecycle: Lifecycle, observer: LifecycleEventObserver, ) { androidx.compose.runtime.DisposableEffect(lifecycle) { lifecycle.addObserver(observer) onDispose { lifecycle.removeObserver(observer) } } }

На экране после resume активности текст станет "12345".

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

  • перечисление State,
    которым описывают этап Lifecycle
  • класс LifecycleOwner,
    который владеет объектом Lifecycle
  • класс DefaultLifecycleObserver,
    с готовыми колбэками onStart и onResume
  • функция repeatOnLifecycle,
    которая запускает блок на нужном этапе
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить