作用
LifecycleObserver的作用是什么?
- Lifecycle 用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。例如手机状态切换等操作,数据将不会重复刷新。
使用
- LifeCycle的使用方式相对简单,如定义一个对象,实现LifecycleObserver方法,下面如自动增长数据为例:
1.新建类MyChronometer
class MyChronometer @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Chronometer(context, attrs, defStyleAttr), LifecycleObserver {
var l: Long = 0
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun startMeter(): Unit {
setBase(SystemClock.elapsedRealtime() - l)
start()
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun stopMeter(): Unit {
l = SystemClock.elapsedRealtime() - base
stop()
}
}
2.MainActivity
class MainActivity : AppCompatActivity() {
lateinit var mChonometer: MyChronometer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mChonometer=findViewById(R.id.chronometer)
lifecycle.addObserver(mChonometer)
}
}
在Activity页面其实很简单,只需将mChonometer lifecycle.addObServer添加到该方法上即可完成生命周期的监听。
基本原理
- 页面AppComponentActivity和FragmentActivity都是继承了ComponentActivity方法
而ComponentActivity实现LifecycleOwner、SavedStateRegistryOwner接口,所以我们直接在Activity页面能直接lifecycle方法