Если вам нужно выполнить длительную операцию и избежать блокировки основного потока, вы можете использовать класс ExecutorService
, который является частью стандартной библиотеки Java. В нем отсутствуют некоторые функции AsyncTask
, такие как обработка результатов в главном потоке, но если вам это не нужно, все равно это хороший выбор:
ExecutorService service = Executors.newCachedThreadPool();
service.submit(() -> peformLongOperation());
Подробнее - здесь
Также CompletableFuture
- опция, позволяющая повысить минимальную версию SDK до 24. Она предоставляет расширенный API для построения цепочки операций для обработки и обработки результата:
CompletableFuture.supplyAsync(() -> performLongOperation())
.thenAccept(result -> runOnUiThread(() -> handleResult(result)));
Здесь хороший гид до CompletableFuture