Ответ
В Android для переключения с фонового потока на главный (UI) поток можно использовать:
- Handler – отправляет сообщения или Runnable в очередь главного потока:
Handler(Looper.getMainLooper()).post {
// Обновляем UI
}
- View.post() – удобный способ через любой View:
myView.post { updateUI() }
- Activity.runOnUiThread():
activity.runOnUiThread {
// Код для UI
}
- Корутины с Dispatchers.Main (Kotlin):
CoroutineScope(Dispatchers.IO).launch {
val data = fetchData()
withContext(Dispatchers.Main) {
showData(data) // UI-операция
}
}
- LiveData – автоматически обновляет UI при изменении данных.
Важно: никогда не обновляйте UI напрямую из фонового потока – это вызовет CalledFromWrongThreadException.