Lifecycle的组件作用就是解耦Activity的生命周期,没当Activity的生命周期改变之后通知Lifecycle观察者。
第一,导入Lifecycle依赖
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
第二,建立一个观察者,实现DefaultLifecycleObserver接口
重写DefaultLifecycleObserver的生命周期函数,比如我们要观察Activity的onStart、onStop周期函数,那么就重写这两个函数。
import android.util.Log
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
class TestModel(var names:String):DefaultLifecycleObserver {
lateinit var name:String
init{
this.name = names
}
override fun onStart(owner: LifecycleOwner) {
Log.e("Xiang","执行了start $name")
}
override fun onStop(owner: LifecycleOwner) {
Log.e("Xiang","执行了stop $name")
}
}
第三,绑定到Activity去。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//添加观察者
lifecycle.addObserver(TestModel("kt"))
setContent {
Text(text = "hi Android")
}
}
}
- 当MainActivity 这个Activity的生命周期发生变化之后,我们可以在观察者TestModel中同步对应的方法。