1.添加依赖
可选不带 ViewModel 和 LiveData 的 Lifecycle ,也可选带 ViewModel 。因为我的工程也用 ViewModel ,就用这个了。
dependencies {
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
}
官网截图,
2.实现自定义 LifecycleObserver
自定义一个 MyLifecycleObserver ,继承 LifecycleObserver 。
使用 @OnLifecycleEvent 注解,传入 Lifecycle.Event.ON_CREATE 等参数,传入的参数和 Activity 的生命周期是对应的。
contextCreate() 、contextPause() 等方法是自己命名的。
import android.util.Log
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
class MyLifecycleObserver: LifecycleObserver {
private val LOG_TAG = MyLifecycleObserver::class.java.name
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun contextCreate(){
Log.d(LOG_TAG, "MyLifecycleObserver -- contextCreate")
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun contextPause(){
Log.d(LOG_TAG, "MyLifecycleObserver -- contextPause")
}
}
3.调用
在被需要观察的 Activity 中,使用 lifecycle.addObserver() 方法调用即可。
这样, MyLifecycleObserver 就可以监听到 Activity 的生命周期了。
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.cosmos.kotlinjetpackapplication.R
class LifecycleActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_lifecycle)
lifecycle.addObserver(MyLifecycleObserver())
}
}