Класс DefaultLifecycleObserver
Интерфейс DefaultLifecycleObserver
описывает колбэки для событий
Lifecycle.
Каждый метод получает
LifecycleOwner.
Переопределяют только нужные этапы,
остальные остаются пустыми по умолчанию.
Observer вешают через
addObserver.
Синтаксис
class MyObserver : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) { }
}
Методы
| Метод | Описание |
|---|---|
onCreate |
Срабатывает после ON_CREATE у owner. |
onStart |
Срабатывает после ON_START. |
onResume |
Срабатывает после ON_RESUME. |
onPause |
Срабатывает после ON_PAUSE. |
onStop |
Срабатывает после ON_STOP. |
onDestroy |
Срабатывает после ON_DESTROY. |
Пример
Давайте сменим текст в onResume:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
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.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.compose.LocalLifecycleOwner
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val owner = LocalLifecycleOwner.current
var text by remember { mutableStateOf("abcde") }
val observer = remember {
object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
text = "12345"
}
}
}
DisposableEffect(owner) {
owner.lifecycle.addObserver(observer)
onDispose {
owner.lifecycle.removeObserver(observer)
}
}
Text(text = text)
}
}
}
На экране после onResume текст станет "12345".
Смотрите также
-
класс
Lifecycle,
на который подписывают observer -
метод
addObserver,
которым регистрируют DefaultLifecycleObserver -
перечисление
State,
которым описывают этапы цикла -
функция
repeatOnLifecycle,
которая запускает блок по State