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
下一篇: 北京中山公园