Класс LifecycleOwner
Интерфейс LifecycleOwner
объявляет свойство lifecycle
типа
Lifecycle.
Его реализуют
ComponentActivity, Fragment
и другие компоненты.
В Compose текущего владельца даёт
LocalLifecycleOwner.
Синтаксис
val lifecycle = lifecycleOwner.lifecycle
Пример
Давайте возьмём LifecycleOwner из Compose:
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 state = owner.lifecycle.currentState
Text(
text = if (state.isAtLeast(
androidx.lifecycle.Lifecycle.State.STARTED,
)) {
"12345"
} else {
"abcde"
},
)
}
}
}
На экране при видимой активности
обычно будет текст "12345".
Пример
Давайте используем this активности как owner:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Text
import androidx.lifecycle.LifecycleOwner
class MainActivity : ComponentActivity(), LifecycleOwner {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val owner: LifecycleOwner = this@MainActivity
Text(text = owner.lifecycle.currentState.name)
}
}
}
На экране появится имя текущего
Lifecycle.State, например RESUMED.
Смотрите также
-
класс
Lifecycle,
который возвращает LifecycleOwner -
класс
LocalLifecycleOwner,
откуда берут owner в composable -
перечисление
State,
которым описывают этап lifecycle -
функция
repeatOnLifecycle,
которая принимает LifecycleOwner