Android Studio 不允许我使用 RepeatOnLifecycle

Jun*_*rao 29 android android-lifecycle kotlin android-studio kotlin-coroutines

我想从 viewModel 观察片段内的数据,但 Android Studio 不断触发此警告。有人可以帮助解决这个问题吗?这个问题是否与 Android Studio Bumbleblee 的更新有关? 在此输入图像描述

ian*_*ake 69

当你写的时候

viewLifecycleOwner.lifecycleScope.launch {
  repeatOnLifecycle(Lifecycle.State.STARTED) {
    // {code to collect from viewModel}
  }
}
Run Code Online (Sandbox Code Playgroud)

repeatOnLifecycle是一个扩展LifecycleOwner- 在这里,您隐式使用this- 即片段的生命周期,最重要的是不是片段视图生命周期。

如文档中所示,您应该明确使用viewLifecycleOwner.repeatOnLifecycle,这正是 Lint 检查告诉您使用的内容:

viewLifecycleOwner.lifecycleScope.launch {
  viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
    // {code to collect from viewModel}
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 不知道为什么它没有隐式使用viewLifecycleOwner,我们从使用viewLifecycleOwner启动的协程调用repeatOnLifecycle,因此在协程内自动调用repeatOnLifecycle是通过viewLifecycleOwner完成的 (2认同)