Lifecycle源码分析

Lifecycle如何检测生命周期

Lifecycle是一个抽象类,它里面定义了三个抽象方法,两个枚举类型,其中三个抽象方法通过注解的形式表示在主线程中,Lifecycle的源码:


public abstract class Lifecycle {
    public Lifecycle() {
    }

    @MainThread
    public abstract void addObserver(@NonNull LifecycleObserver var1);

    @MainThread
    public abstract void removeObserver(@NonNull LifecycleObserver var1);

    @MainThread
    @NonNull
    public abstract Lifecycle.State getCurrentState();

    public static enum State {
        DESTROYED,
        INITIALIZED,
        CREATED,
        STARTED,
        RESUMED;

        private State() {
        }

        public boolean isAtLeast(@NonNull Lifecycle.State state) {
            return this.compareTo(state) >= 0;
        }
    }

    public static enum Event {
        ON_CREATE,
        ON_START,
        ON_RESUME,
        ON_PAUSE,
        ON_STOP,
        ON_DESTROY,
        ON_ANY;

        private Event() {
        }
    }
}

前两个方法分别是添加和解除绑定,就不多说了,后边的两个枚举的作用是为实现LifecycleObserver接口里面的方法添加注解提供,让实现此接口的方法在某个生命周期时执行。如:


public interface LifecycleHelper extends LifecycleObserver {

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    void onStartLifecycle();

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    void onCreateLifecycle();

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    void onResumeLifecycle();

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    void onPauseLifecycle();

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    void onStopLifecycle();

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    void onDestoryLifecycle();

}

而LifecycleObserver接口里面本身没有任何操作,源码:


public interface LifecycleObserver {

}

最后将整个流程联系起来,通过Activity里的getLifecycle方法,将Activity的生命周期获取到,然后通过lifecycle里的addObserver订阅。

最后实现LifecycleHelper接口的方法结果如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值