我们可以用协程替换可运行代码吗?
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,操作就会执行。这意味着您不必处理视图可能尚未初始化等边缘情况。
在这里使用协程会使事情复杂化,并且不会增加任何性能优势。
我正在尝试将 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,操作就会执行。这意味着您不必处理视图可能尚未初始化等边缘情况。
在这里使用协程会使事情复杂化,并且不会增加任何性能优势。