LifeCycle

简介

生命周期感知型组件:可以相应另一个组件(Activity or Fragment)的生命周期变化。以便代码更精简、易维护

作用

监听Activity 或 Fragment的生命周期变化

原理

观察者模式,在各个生命周期注册相关回调,实现LifeCycleObsever 通过注释的方式实现回调。

使用

角色

LifeCycleOwner 被观察者(大部分时候是Actvity,Fragment)

AppCompatActivity与V4中的Fragment都已默认实现了LifeCyclerOwner接口,所以可以直接使用

LifeCycleObsever 观察者(可以是任何类)

Activit 中使用

Activit:

getLifeCycle().addObserver(new LifeCycleObserver());

注:直接把实现了Observer 的类的实例传进去就行(默认没实现LifeCyclerOwner接口的自己手动实现一下,并在各个生命周期添加对应的调用)

观察者:

继承LifeCycleObserve类,或者继承他的子类

随便写个方法

添加注释@OnLifeCycleEven(LifeCycle.Even.ON_RESUME)

  • LifeCycle.Even.ON_CREATE
  • LifeCycle.Even.ON_START
  • LifeCycle.Even.ON_RESUME
  • LifeCycle.Even.ON_PAUSE
  • LifeCycle.Even.ON_STOP
  • LifeCycle.Even.ON_DESTROY
  • LifeCycle.Even.ON_ANY (可用于匹配所有事件的事件常量。)
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onAny(LifecycleOwner owner, Lifecycle.Event event) {
        System.out.println("onAny:" + event.name());
    }

这样这个方法就会在对应的生命周期回调的时候调用了

其他生命周期一样的写法只是Even不同

注:LifeCycle.Even.Any 这个带表的是任何生命周期,可以在这里监听生命周期的变化,能获取到切换到的生命周期

Fragment 中使用

和Activity相同

获取当前生命周期

方法中添加 LifecycleOwner 参数

@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    fun onLifecycleChanged(
        owner: LifecycleOwner,
        event: Lifecycle.Event
    ){
        owner.lifecycle
        Log.d(TAG,"onLifecycleChanged...")
    }

你可能感兴趣的:(LifeCycle)