您当前的位置: 首页 > 
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Jetpack LifeCycle极简使用

沙漠一只雕得儿得儿 发布时间:2021-01-09 16:18:48 ,浏览量:0

使用方式一:继承自AppCompatActivity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        lifecycle.addObserver(object : LifecycleEventObserver {
            override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
                Log.d("lifecycle", "onStateChanged: event =$event")
            }
        })
    }
}

打印出activity声明周期的回调日志如图:

 

使用方式二:继承自普通的 Activity

我们创建一个继承自普通的 Activity 的 Activity ,那自然无法直接使用 getLifecycle() 方法来获取 Lifecycle 。

这时候,我们就需要自己实现LifecycleOwner接口,并在具体的生命周期下通过 LifecycleRegistry 的 markState(...)方法来主动进行事件的分发。请看下面改造过的 MainActivity.java 代码 

open class MainActivity : Activity(), LifecycleOwner {

    lateinit var mLifecycleRegistry: LifecycleRegistry


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mLifecycleRegistry = LifecycleRegistry(this)
        mLifecycleRegistry.markState(Lifecycle.State.CREATED)
        lifecycle.addObserver(object : LifecycleEventObserver {
            override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
                Log.d("activity", "onStateChanged: event =$event")
            }
        })
    }

    override fun onResume() {
        super.onResume()
        mLifecycleRegistry.markState(Lifecycle.State.RESUMED)
    }

    override fun onPause() {
        super.onPause()
        mLifecycleRegistry.markState(Lifecycle.State.STARTED)
    }

    override fun onDestroy() {
        super.onDestroy()
        mLifecycleRegistry.markState(Lifecycle.State.DESTROYED)
    }

    override fun getLifecycle(): Lifecycle {
        return mLifecycleRegistry
    }

}

打印结果如图:

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.0391s