美文网首页
Jetpack之Lifecycles

Jetpack之Lifecycles

作者: 放羊娃华振 | 来源:发表于2022-09-16 02:27 被阅读0次

一、概念

生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您编写出更有条理且往往更精简的代码,此类代码更易于维护。
一种常见的模式是在 Activity 和 Fragment 的生命周期方法中实现依赖组件的操作。但是,这种模式会导致代码条理性很差而且会扩散错误。通过使用生命周期感知型组件,您可以将依赖组件的代码从生命周期方法移入组件本身中。

二、LifeCycles的使用

1.添加依赖
implementation 'androidx.lifecycle:lifecycle-common-java8:2.2.0'

只有添加这个依赖才能使用DefaultLifecycleObserver。

2.推荐使用方法
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        lifecycle.addObserver(object : DefaultLifecycleObserver {
            override fun onCreate(owner: LifecycleOwner) {
 
            }
 
            override fun onResume(owner: LifecycleOwner) {
 
            }
 
            override fun onDestroy(owner: LifecycleOwner) {
 
            }
        })
    }

注意点:DefaultLifecycleObserver是个抽象类,需要实现下。

3.自定义的使用方式
class MyLifeCycle :LifecycleObserver{

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun activityStart() {
        Log.e("lifecycleObserver","start")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun activityPause() {
        Log.e("lifecycleObserver","pause")
    }
}

该方式需要实现LifecycleObserver接口,通过注解标记回调@OnLifeycleEvent(Lifecycle.Event.XXX),通用的注解有:ON_CREATE、ON_START、ON_RESUME、ON_PAUSE、ON_STOP、ON_DESTROY、ON_ANY。

4.添加观察者
lifecycleOwner.lifecycle.addObserver(observer())

无论是上面的2或3实现的方式,都是需要添加观察者的。

三、其他

其实实现生命周期的监听也可以使用Application的registerActivityLifecycleCallbacks方法,该方法是能做到全局监听。使用则是在Application的onCreate方法中添加如下代码:

registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks(){
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

            }

            @Override
            public void onActivityStarted(Activity activity) {

            }

            @Override
            public void onActivityResumed(Activity activity) {

            }

            @Override
            public void onActivityPaused(Activity activity) {

            }

            @Override
            public void onActivityStopped(Activity activity) {

            }

            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {

            }

            @Override
            public void onActivityDestroyed(Activity activity) {

            }

参考文档:
LifeCycles官网:https://developer.android.google.cn/topic/libraries/architecture/lifecycle
csdn介绍lifecycle:https://blog.csdn.net/nity_/article/details/117707720
简书介绍lifecycle:https://www.jianshu.com/p/128b655e10ee

相关文章

网友评论

      本文标题:Jetpack之Lifecycles

      本文链接:https://www.haomeiwen.com/subject/yrkfortx.html