Android Lifecycle相关

Lifecycle是什么
Lifecycle是Android Architecture Components 的一个组件,用于将系统组件(Activity、Fragment等等)的生命周期分离到 Lifecycle 类,Lifecycle 允许其他类作为观察者,观察组件生命周期的变化。
Lifecycle是为了实现Android中Activity和Fragment生命周期中代码逻辑控制的解耦。比如之前我们经常在Activity中注册定位监听动态接收位置信息,在Activity的onStrat()的方法内启动定位,
在Activity的onStop()方法中停止定位来节省资源,使用LifeCycle后就不需要在Activity的声明周期方法中操作定位监听,在定位监听类中获取Activity的生命周期并控制是否注册和移除监听操作。避免Activity销毁时,定位方法还在执行,造成内存泄露问题。

Lifecycle有两个枚举用于追踪生命周期中的状态。
1.Event:这是生命周期的事件类,会在Framework和LifeCycle间传递,这些事件映射到Activity和Fragment的回调事件中。
2.State:LifeCycle所持有Activity或Fragment的当前状态。

Lifecycle主要的方法
1. public abstract void addObserver(@NonNull LifecycleObserver observer);
用于添加一个LifecycleObserver,当LifecycleOwner更改状态时,LifecycleObserver将得到通知
2. public abstract State getCurrentState();
用于获取当前Activity或者Fragment生命周期状态

LifecycleObserver实现了这个接口的类可以监听 Acitivity,Fragment的生命周期方法
LifeCycleOwner是一个接口Activity和Fragment只要实现这个接口就能配合LifeCycle实现生命周期被监听。可以通过getLifecycle()获取一个LifeCycle对象

具体实现如下:
(一)导入Lifecycle库

 //lifecycle相关
    implementation "android.arch.lifecycle:livedata:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

(二)定位监听类实现LifecycleObserver接口

public class MyLocationListener implements LifecycleObserver{

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    public void create(){
        //对应Activity的onCreate()方法
        Log.e("MyListener","create");
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void resume(){
        //对应Activity的onResume()方法
        Log.e("MyListener","resume");
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void pause(){
        //对应Activity的onPause()方法
        Log.e("MyListener","pause");
    }
}

(三)Activity或者Fragment实现LifecycleOwner接口

public class OneChatActivity extends BaseActivity implements LifecycleOwner{
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //相当于添加MyLocationListener类来观察Activity生命周期变化
        getLifecycle().addObserver(new MyLocationListener());
    }
}

更多资料查询
https://developer.android.google.cn/topic/libraries/architecture/lifecycle
https://www.jianshu.com/p/9b3da5fe0ff6
https://blog.csdn.net/g6uqwseseo/article/details/72621241

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值