欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Jetpack之Lifecycle的基本使用

程序员文章站 2023-01-21 21:50:19
Lifecycle组件是帮忙我们管理Activity和Fragment的生命周期,也就是说,当Activity或者Fragment的生命周期发送变化的时候我们可以得到通知。使用AndroidX就不需要导入额外的包,AndroidX已经包含了Jetpack相关组件了。一:AppCompatActivity默认实现了LifecycleOwner接口,可以直接使用Lifecycle1:创建一个类实现LifecycleObserver接口来监听生命周期package com.lzk.jetpack...

Lifecycle组件是帮忙我们管理Activity和Fragment的生命周期,也就是说,当Activity或者Fragment的生命周期发送变化的时候我们可以得到通知。使用AndroidX就不需要导入额外的包,AndroidX已经包含了Jetpack相关组件了。

一:AppCompatActivity默认实现了LifecycleOwner接口,可以直接使用Lifecycle

1:创建一个类实现LifecycleObserver接口来监听生命周期

package com.lzk.jetpacktest.lifecycle

import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent

class MyObserver : LifecycleObserver {

    private val TAG = this.javaClass.simpleName

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    fun onCreate(){
        Log.d(TAG,"onCreate")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart(){
        Log.d(TAG,"onStart")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    fun onResume(){
        Log.d(TAG,"onResume")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    fun onPause(){
        Log.d(TAG,"onPause")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop(){
        Log.d(TAG,"onStop")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    fun onDestroy(){
        Log.d(TAG,"onDestroy")
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    fun onAny(){
        Log.d(TAG,"onAny")
    }
}

2:在Activity/Fragment中添加Observer

因为该Activity继承自AppCompatActivity,所以可以直接获取lifecycle 

lifecycle.addObserver(MyObserver())

二:自定义Lifecycle

继承自Activity类的Activity没有实现LifecycleOwner接口,所以需要自定义Lifecycle

1:同样需要创建一个类继承自LifecycleObserver

2:Activity实现LifecycleOwner,创建一个LifecycleRegistry对象,添加Observer,然后在getLifecycle()返回该对象,这样在LifecycleObserver类中就可以监听到生命周期

package com.lzk.jetpacktest.lifecycle

import android.app.Activity
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LifecycleRegistry
import com.lzk.jetpacktest.R

/**
 * Activity没有实现LifecycleOwner接口
 */
class CusLifeCycleActivity : Activity(),LifecycleOwner {

    private lateinit var mLifecycleRegistry: LifecycleRegistry

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_cus_life_cycle)
        mLifecycleRegistry = LifecycleRegistry(this)
        mLifecycleRegistry.addObserver(MyObserver())
    }

    override fun getLifecycle(): Lifecycle {
        return mLifecycleRegistry
    }
}

参考:lifecycle使用入门 lifecycle实际使用示例

本文地址:https://blog.csdn.net/LZK_Dreamer/article/details/107169927