Android 在 ViewPager2 内的片段中重复生命周期

Android repeatOnLifecycle in fragment inside ViewPager2

如果我将以下代码片段添加到“普通”片段,它会在导航到片段和从片段导航时按预期启动和取消,但如果我将它添加到视图寻呼机 2 内的片段,它甚至不会被取消尽管调用了 fragmens onPause 方法。这是设计使然还是我遗漏了什么?

lifecycleScope.launch {
    viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
        try {
            while (isActive) {
                println("Fragment alive....")
                delay(1000)
            }
        } catch (ex: CancellationException) {
            println("Cancelled fragment...")
            throw ex
        }
    }
}

我不确定我是否答对了你的问题,但如果你希望在 Fragment 可见时执行你的代码,我已经知道你在传递错误的生命周期事件,因为你需要使用 repeatOnLifecycle(Lifecycle.State.RESUMED)。使用此代码将在 Fragment 为 visible 时立即开始执行,并在暂停时取消。 使用 repeatOnLifecycle(Lifecycle.State.STARTED) 您的代码将在 Fragment 启动(准备显示)时开始执行,并在它停止时被取消。