Fragment生命周期监听

/ 0评 / 25

当应用程序涉及的 Fragment 越来越多时,我们需要对有关 Fragment 的生命周期事件做更多的管理和维护。registerFragmentLifecycleCallbacks 是一种非常好的管理 Fragment 生命周期事件的方式,可以让您在适当的时候更加灵活地执行功能。

什么是 registerFragmentLifecycleCallbacks

registerFragmentLifecycleCallbacks 是一个 Android 应用程序的一部分,加入自 Android Support Library 26.1.0 版本。这个 API 允许我们为 FragmentManager 注册一个回调接口,并在 Fragment 生命周期事件发生时调用。回调接口由 FragmentManager.FragmentLifecycleCallbacks 接口定义,其中包括 onFragmentCreatedonFragmentStartedonFragmentDestroyed 等监听事件,用于在 Fragment 生命周期中做一些额外的操作。

如何使用 registerFragmentLifecycleCallbacks

首先在 MainActivity 中获取 FragmentManager,并创建一个 FragmentManager.FragmentLifecycleCallbacks 接口的实现,代码示例如下:

val fragmentManager = supportFragmentManager
val callback = object : FragmentManager.FragmentLifecycleCallbacks() {
    override fun onFragmentCreated(fm: FragmentManager, f: Fragment, savedInstanceState: Bundle?) {
        // 回调方法:在 Fragment 创建后执行一些操作
    }

    override fun onFragmentStarted(fm: FragmentManager, f: Fragment) {
        // 回调方法:在 Fragment 启动后执行一些操作
    }

    override fun onFragmentDestroyed(fm: FragmentManager, f: Fragment) {
        // 回调方法:在 Fragment 销毁后执行一些操作
    }
}

然后,我们可以调用 registerFragmentLifecycleCallbacks 方法将回调注册到 FragmentManager 上,在需要管理的时候就会在合适的时刻调用注册的回调。

fragmentManager.registerFragmentLifecycleCallbacks(callback, true)

在注册的时候,第二个参数 true 表示是对于子Fragment的FragmentManagers也注册回调,false表示只针对传入的fragmentManager进行注册。

当不再需要回调的时候,可以使用 unregisterFragmentLifecycleCallbacks 方法将其取消注册。以下是一个简单的代码示例:

fragmentManager.unregisterFragmentLifecycleCallbacks(callback)

或者在fragmentManager销毁的时候,所有监听会被自动取消

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注