android 使用生命周期观察者(一)LifecycleObserver方法

829 阅读1分钟

作用

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方法

image.png 而ComponentActivity实现LifecycleOwner、SavedStateRegistryOwner接口,所以我们直接在Activity页面能直接lifecycle方法