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

Класс LocalLifecycleOwner

Объект LocalLifecycleOwner - это CompositionLocal, который хранит текущего LifecycleOwner для composable. Значение читают через LocalLifecycleOwner.current. Его используют collectAsStateWithLifecycle и подписки на Lifecycle внутри setContent активности.

Синтаксис

val owner = LocalLifecycleOwner.current

Пример

Давайте прочитаем имя текущего State:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.lifecycle.compose.LocalLifecycleOwner class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val owner = LocalLifecycleOwner.current val name = owner.lifecycle.currentState.name Text(text = if (name == "RESUMED") "12345" else "abcde") } } }

На экране при RESUMED будет "12345", иначе "abcde".

Пример

Давайте передадим lifecycle в repeatOnLifecycle:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.material3.Text import androidx.compose.runtime.LaunchedEffect 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.compose.LocalLifecycleOwner import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.delay class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val owner = LocalLifecycleOwner.current var text by remember { mutableStateOf("abcde") } LaunchedEffect(owner) { owner.lifecycle.repeatOnLifecycle( Lifecycle.State.STARTED, ) { delay(200) text = "12345" } } Text(text = text) } } }

На экране текст сменится на "12345", когда owner из LocalLifecycleOwner активен.

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

  • класс LifecycleOwner,
    который хранит LocalLifecycleOwner
  • класс Lifecycle,
    к которому обращаются через owner
  • функция collectAsStateWithLifecycle,
    которая читает lifecycle из local
  • метод addObserver,
    который вызывают на owner.lifecycle
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить