Android进阶之路Android开发经验谈Android开发

Jetpack-Lifecycle

2021-01-24  本文已影响0人  薛之涛

lifecycle是jetpack的架构组件成员,其主要作用是对Activity/Fragment的生命周期进行监听。比如:监听activity的onStart()状态来进行耗时操作,onDestory()进行资源的回收销毁等。

lifecycle的主要几个类

lifecycle的主要几个方法

练习

创建一个生命周期的接口

interface IPresent {
    fun onCreat()
    fun onStart()
    fun onResume()
    fun onPause()
    fun onStop()
    fun onDestory()
}

注意:lifecycle没有Activity的onRestart()周期的订阅观察。
生命周期的接口的实现类

class Present : IPresent,LifecycleObserver{

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    override fun onCreat() {
        Log.d(TAG, "onCreat: ")
    }
    
    //onAny是每个生命周期都会调用到一次
   //@OnLifecycleEvent(Lifecycle.Event.ON_ANY)
    
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    override fun onStart() {
        Log.d(TAG, "onStart: ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    override fun onResume() {
        Log.d(TAG, "onResume: ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    override fun onPause() {
        Log.d(TAG, "onPause: ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    override fun onStop() {
        Log.d(TAG, "onStop: ")
    }
    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    override fun onDestory() {
        Log.d(TAG, "onDestory: ")
    }
}

注意:还有一个Lifecycle.Event.ON_ANY的注解,是每个生命周期都会调用到一次。

MainActivity的监听

class MainActivity : AppCompatActivity() {
    companion object{
        const val TAG = "MainActivity"
    }

    val present = Present()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
       //lifecycle订阅观察者
        lifecycle.addObserver(present)
        var  btnJump =findViewById<Button>(R.id.btnJump)
        var  btnRemove=findViewById<Button>(R.id.btnRemove)
       //跳转到下一个页面的监听
        btnJump.setOnClickListener {
            startActivity(Intent(this,MainActivity2 :: class.java))
        }
        btnRemove.setOnClickListener {
            lifecycle.removeObserver(present)
        }
    }
}

打印:


image.png

lifecycle的使用就是这么简单,难点是去了解它的工作原理,这就需要查看源码了。推荐阅读文章

上一篇 下一篇

猜你喜欢

热点阅读