Android 生命週期 - DefaultLifecycleObserver

和生命週期关联的类别

tags: Android lifecycle

DefaultLifecycleObserver

doc
:::info
继承自 DefaultLifecycleObserver 的类别,最主要的用途有两个,一是解决在 fragment 或 activity 里面大量在 onstart 和 onStop 的代码

另一个是仅是在 onStart 执行该类别的启动,并不能保证他能在 onStop 之前启动完成,有可能 onStop 会比 onStart 早完成
:::

class MyObserver : DefaultLifecycleObserver {    override fun onResume(owner: LifecycleOwner) {        connect()    }    override fun onPause(owner: LifecycleOwner) {        disconnect()    }}//activitymyLifecycleOwner.getLifecycle().addObserver(MyObserver())

这个实现会在 activity 对生命週期做观察,如果里面的 function 需要对 lifecycle 的条件下限制,也可透过这样做外部传入

internal class MyLocationListener(        private val context: Context,        private val lifecycle: Lifecycle,        private val callback: (Location) -> Unit): DefaultLifecycleObserver {    private var enabled = false    override fun onStart(owner: LifecycleOwner) {        if (enabled) {            // connect        }    }    fun enable() {        enabled = true        if (lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) {            // connect if not connected        }    }    override fun onStop(owner: LifecycleOwner) {        // disconnect if connected    }}

那这样做的好处在哪?activity 不须了解类别的实作了,而是由各类别各自实现 他们在生命週期各阶段的状态,也就是透过这样

各类别的覆用性提高activity 的内聚性提高不会被生命週期绑架,写出过多的样板代码

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章