Ответ
В Android есть несколько способов работы с потоками:
- Thread/Runnable - базовый способ, но требует ручного управления:
new Thread(() -> {
// Фоновая работа
}).start();
- Handler/Looper - для работы с UI из фонового потока:
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
// Обновление UI
});
-
AsyncTask (устарел) - для простых фоновых задач с обновлением UI.
-
ExecutorService - пул потоков для параллельных задач:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.execute(() -> {
// Фоновая работа
});
- Coroutines - современный подход с Kotlin:
viewModelScope.launch(Dispatchers.IO) {
val data = fetchData()
withContext(Dispatchers.Main) {
updateUI(data)
}
}
- RxJava - реактивное программирование (сложнее, но мощнее).
Для работы с UI из фона всегда используйте главный поток (Main/UI thread). Корутины сейчас рекомендуемый подход.