【问题标题】:Can we replace runnable code with coroutine?我们可以用协程替换可运行代码吗?
【发布时间】:2021-08-27 01:30:16
【问题描述】:

我正在尝试滚动 ScrollView 直到 ScrollView 内的视图底部。 我在 StackOverflow 中找到了这样一个可行的解决方案。

scrollView.post {
    scrollView.smoothScrollTo(0, myAwesomeTextView.bottom) 
}

我想避免 Runnable 并改用 Coroutine。我想知道我们如何用协程替换这段代码? 我尝试了以下方法,但没有成功。

CoroutineScope(Dispatchers.Main).launch {
                scrollView.smoothScrollTo(0, myAwesomeTextView.bottom) 
            }

我们将不胜感激。

【问题讨论】:

  • 避免 Runnable 的任何具体原因?
  • 我很好奇为什么你的协程不起作用。它看起来不错,尽管使用 lifecycleScope 会更典型。

标签: android android-studio kotlin kotlin-coroutines runnable


【解决方案1】:

从性能和代码质量的角度来看,在这种特殊情况下,使用协程代替 View.post 没有任何优势。 scrollView.post 非常适合该用例,因为它将在scrollView 的消息队列中排队操作,因此一旦视图附加到窗口,操作就会执行。这意味着您不必处理视图可能尚未初始化等的边缘情况。

在这里使用协程会使事情复杂化,并且不会增加任何性能优势。

【讨论】:

  • 感谢您的澄清。荣誉
猜你喜欢
  • 2011-10-21
  • 2010-12-12
  • 2017-07-09
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-26
  • 2021-11-22
相关资源
最近更新 更多