Ответ
В Android есть несколько способов выполнять задачи в фоне:
- Thread/Runnable – базовый способ:
new Thread(() -> {
// Background work
runOnUiThread(() -> {
// UI updates
});
}).start();
- Handler/Looper – для отложенных задач:
Handler handler = new Handler(Looper.getMainLooper());
handler.postDelayed(() -> {
// Code to run after delay
}, 1000);
-
AsyncTask (deprecated) – для коротких операций с UI обновлениями.
-
Kotlin Coroutines – современный подход:
lifecycleScope.launch(Dispatchers.IO) {
val result = doWork()
withContext(Dispatchers.Main) {
updateUI(result)
}
}
- RxJava – для реактивного программирования:
Observable.fromCallable(() -> heavyTask())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> updateUI(result));
- WorkManager – для отложенных гарантированных задач:
val workRequest = OneTimeWorkRequestBuilder<MyWorker>().build()
WorkManager.getInstance(context).enqueue(workRequest)
Для долгих операций лучше использовать WorkManager или Foreground Service.