Перечисление State
Перечисление Lifecycle.State
задаёт, на каком этапе сейчас
Lifecycle.
Значения упорядочены: чем дальше
по списку, тем ближе экран к пользователю.
Сравнение делают через isAtLeast
или передают в
repeatOnLifecycle.
Синтаксис
Lifecycle.State.STARTED
Значения
| Значение | Описание |
|---|---|
DESTROYED |
Компонент уничтожен, observer больше не получает события. |
INITIALIZED |
Объект создан, но onCreate ещё не вызывали. |
CREATED |
После onCreate. UI может быть не виден. |
STARTED |
Экран виден, но может быть не в фокусе. Часто от этого этапа собирают Flow. |
RESUMED |
Activity на переднем плане и принимает ввод. |
При уходе с экрана состояние спускается
от RESUMED к DESTROYED
по цепочке событий onPause, onStop, onDestroy.
Пример
Давайте покажем RESUMED как активный этап:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.compose.LocalLifecycleOwner
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val owner = LocalLifecycleOwner.current
val active = owner.lifecycle.currentState
.isAtLeast(Lifecycle.State.RESUMED)
Text(text = if (active) "12345" else "abcde")
}
}
}
На экране при RESUMED будет "12345",
иначе "abcde".
Смотрите также
-
класс
Lifecycle,
который хранит текущее State -
функция
repeatOnLifecycle,
которая ждёт минимум STARTED -
функция
collectAsStateWithLifecycle,
которая учитывает State при collect -
класс
LifecycleOwner,
у которого читают lifecycle.currentState