前言
lifecycle 通過註解的方式,輕鬆監聽Activity的聲明週期。
開始
- 集成類庫
build.gradle
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
- 編寫註解類
@OnLifecycleEvent註解可以監聽聲明週期
class MyChronmeter(context: Context?, attrs: AttributeSet?) : Chronometer(context, attrs),LifecycleObserver {
var elapsedRealtime = 0L
/**
* onPause時候執行
*/
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun pauseMeter(){
elapsedRealtime = SystemClock.elapsedRealtime() - base
}
/**
* onResume時執行
*/
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun resumeMeter(){
base = SystemClock.elapsedRealtime() - elapsedRealtime
}
}
- 綁定Activity
class JetLifeCyclesActivity : AppCompatActivity() {
lateinit var chronometer: MyChronmeter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_life_cycler)
chronometer = findViewById(R.id.meter)
lifecycle.addObserver(chronometer)
}
}