Android Jetpack组件Lifecycle

发布于:2022-12-19 ⋅ 阅读:(369) ⋅ 点赞:(0)

Lifecycle是什么

Lifecycle 是一个类,用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。
Lifecycle概述https://developer.android.google.cn/topic/libraries/architecture/lifecycle

Lifecycle使用

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getLifecycle().addObserver(new LifecycleEventObserver() {
            @Override
            public void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event) {
                Log.e("tag", "【onStateChanged】: " + event.name());
            }
        });
    }
}

运行如下:
在这里插入图片描述

Lifecycle原理

uml图总结:
在这里插入图片描述
这里不从代码角度展开,直接画出addObserver出执行的逻辑流程图

LifecycleRegistry.addObserver
ObserverWithState.dispatchEvent
LifecycleEventObserver.onStateChanged
LifecycleRegistry.sync
LifecycleRegistry.backwardPass
LifecycleRegistry.forwardPass

各个声明周期的执行逻辑:

MainActivity.onCreate
LifecycleRegistry.handleLifecycleEvent
LifecycleRegistry.moveToState
LifecycleRegistry.sync
LifecycleRegistry.backwardPass
LifecycleRegistry.forwardPass
ObserverWithState.dispatchEvent
LifecycleEventObserver.onStateChanged
MainActivity.onStart
MainActivity.onResume
MainActivity.onPause
MainActivity.onStop
MainActivity.onDestroy
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到