简介
lifecycle 是属于Android Jetpack(官方开发工具包)—— Architecture(架构组件)中的一员。构建生命周期感知型组件,这些组件可以根据 Activity 或 Fragment 的当前生命周期状态调整行为。
通俗来讲就是,lifecycle可以和Activity或Fragment生命周期绑定,方便我们做一些跟生命周期相关的业务逻辑。
- 应用场景
-
控制视频缓冲的开始与停止:启动App的时候可以更快的开始缓冲视频,App销毁时停止缓冲。
-
开始和停止网络连接:应用位于前台时可能需要实时传输数据,并在应用进入后台时自动暂停。
-
控制页面动画的启动与停止:动画在页面可见时进行播放,不可见时停止。
使用
分为两步(被观察者已经被Android源码实现了:
- 创建观察者
- 注册观察者
创建观察者
- 创建类实现LifecycleObserver接口
- 在其内部创建方法(方法名随意),参数可填LifecycleOwner,也可不填。
- 给方法加注解
@OnLifecycleEvent(Lifecycle.Event.XXX)
,可以让该方法监听到注解生命周期的变化。
//实现Lifecycles的接口
public class MyObsever implements LifecycleObserver {
private static final String TAG = "TestLifecycleObserver";
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
// 2、在其内部创建方法(方法名随意),参数可填LifecycleOwner,也可不填。
void onCreate(LifecycleOwner owner) {
Log.e(TAG, "========onCreate====" + owner);
}
// 3、给方法加注解 @OnLifecycleEvent(Lifecycle.Event.XXX)
// 可以让该方法监听到注解生命周期的变化。
@OnLifecycleEvent(Lifecycle.Event.ON_START)
void onStart() {
Log.e(TAG, "========onStart");
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume(LifecycleOwner owner) {
Log.e(TAG, "========onResume");
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause(LifecycleOwner owner) {
Log.e(TAG, "========onPause");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
void onStop(LifecycleOwner owner) {
Log.e(TAG, "========onStop");
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestroy(LifecycleOwner owner) {
Log.e(TAG, "========onDestroy");
}
// Lifecycle.Event.ON_ANY 可以监听所有生命周期变化
@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
void onAny(LifecycleOwner owner) {
Log.e(TAG, "========onAny");
}
}
注册观察者
AppCompatActivity与Fragment是默认的被观察者,在其内部通过调用getLifecycle().addObserver(观察者)注册定义好的观察者即可。
只要你的Activity是继承自AppCompatActivity的,或者你的Fragment是继承自androidk
fragment.app. Fragment的,那么它们本身就是一个LifecycleOwner的实例,这部分工作已
由AndroidX库自动帮我们完成了。
我们只需要在所要监听的活动或者碎片添加如下代码即可。
//实现注册观察者
getLifecycle().addObserver(new MyObsever());