/// Состояние жизненного цикла компонента.
///
/// Отражает текущую фазу Android lifecycle:
/// `Created → Started → Resumed ↔ Paused → Stopped → Destroyed`.
#[derive(PartialEq, Debug)]
pub enum LifecycleState {
    /// Компонент создан, но ещё не отображается.
    Created,
    /// Компонент видим, но неактивен (перекрыт другим).
    Started,
    /// Компонент активен и принимает ввод.
    Resumed,
    /// Компонент приостановлен (частично невидим).
    Paused,
    /// Компонент остановлен (полностью невидим).
    Stopped,
    /// Компонент уничтожен, ресурсы освобождены.
    Destroyed,
}

/// Наблюдатель жизненного цикла.
///
/// Реализуется компонентами и Application для получения
/// уведомлений об изменениях Android lifecycle.
/// Все методы имеют пустую реализацию по умолчанию.
pub trait LifecycleObserver {
    /// Компонент создан.
    fn on_create(&mut self) {}
    /// Компонент стал видим.
    fn on_start(&mut self) {}
    /// Компонент стал активным (на вершине стека).
    fn on_resume(&mut self) {}
    /// Компонент приостановлен (с вершины стека убран другой компонент).
    fn on_pause(&mut self) {}
    /// Компонент остановлен (полностью невидим).
    fn on_stop(&mut self) {}
    /// Компонент уничтожен.
    fn on_destroy(&mut self) {}
}
