Ответ
В Android есть несколько способов выполнения кода в фоновом потоке:
- Thread - базовый класс Java:
new Thread(() -> {
// Фоновый код
}).start();
- HandlerThread - поток с Looper для обработки сообщений:
HandlerThread handlerThread = new HandlerThread("MyHandlerThread");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
- ExecutorService - пул потоков из java.util.concurrent:
ExecutorService executor = Executors.newFixedThreadPool(4);
executor.execute(() -> {
// Фоновый код
});
- AsyncTask (устарел) - для коротких фоновых операций с обновлением UI:
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
// Фоновый код
return null;
}
}.execute();
-
IntentService/JobIntentService (устарели) - для фоновых задач, связанных с сервисами.
-
WorkManager - для отложенных гарантированных фоновых задач:
WorkRequest myWorkRequest = OneTimeWorkRequest.from(MyWorker.class);
WorkManager.getInstance(context).enqueue(myWorkRequest);