Можем ли мы заменить выполняемый код сопрограммой?

#android #android-studio #kotlin #kotlin-coroutines #runnable

Вопрос:

Я пытаюсь прокрутить ScrollView до нижней части представления внутри ScrollView . Я нашел такое рабочее решение в StackOverflow.

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

Я хочу избежать запуска и вместо этого использовать сопрограмму. Мне интересно, как мы можем заменить этот код сопрограммой?
Я попробовал пойти по этому пути, но ничего не вышло.

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

Любая помощь будет высоко оценена.

Комментарии:

1. Есть ли какая-то конкретная причина для того, чтобы избегать запуска?

2. Однако мне любопытно, почему ваша сопрограмма не сработала. Это выглядит нормально, хотя было бы более типично для использования lifecycleScope .

Ответ №1:

С точки зрения производительности и качества кода, в данном конкретном случае нет никаких преимуществ в использовании сопрограмм вместо View.post . scrollView.post очень хорошо подходит для случая использования, так как он будет помещать операцию в очередь scrollView сообщений, поэтому операция будет выполнена, как только представление будет прикреплено к окну. это означает, что вам не нужно обрабатывать граничные случаи, когда представление, возможно, не было инициализировано и т. Д.

Использование сопрограмм здесь усложнит ситуацию и не добавит никаких преимуществ в производительности.

Комментарии:

1. Спасибо за разъяснение. Почет