我们可以用协程替换可运行代码吗?

Can we replace runnable code with coroutine?

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

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

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

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

非常感谢任何帮助。

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

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