Ответ
LifecycleOwner определяет изменение состояния через LifecycleRegistry, который хранит текущее состояние и уведомляет наблюдателей (LifecycleObservers). Состояние меняется при вызове handleLifecycleEvent() с соответствующим событием (ON_CREATE, ON_START и т.д.). Например, в Activity события автоматически вызываются системой:
class MyActivity : AppCompatActivity() {
override fun onCreate() {
lifecycle.handleLifecycleEvent(Lifecycle.Event.ON_CREATE)
}
}
Для кастомных LifecycleOwner нужно вручную вызывать handleLifecycleEvent() при изменении состояния. LifecycleRegistry сравнивает новое состояние с текущим и уведомляет наблюдателей только если состояние действительно изменилось.