Есть несколько старых библиотек в качестве альтернативы AsyncTask, но как я могу быть уверен, что они будут иметь поддержку и никаких проблем в Android 11 и далее? - PullRequest
0 голосов
/ 04 марта 2020

В приложении Android,

Мне нужен AsyncTask, но поскольку он устарел с Android 11, мне нужна альтернатива

Проблема в том, что в качестве альтернативы есть несколько старых библиотек, но как я могу быть уверен, что у них не возникнет проблем в Android 11 и далее?

Например, для Needle ( ссылка здесь ) нет обновленной информации о Android Поддержка уровня API
Теперь я могу использовать его в Android 11?

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Если вам нужно выполнить длительную операцию и избежать блокировки основного потока, вы можете использовать класс ExecutorService, который является частью стандартной библиотеки Java. В нем отсутствуют некоторые функции AsyncTask, такие как обработка результатов в главном потоке, но если вам это не нужно, все равно это хороший выбор:

ExecutorService service = Executors.newCachedThreadPool();
service.submit(() -> peformLongOperation());

Подробнее - здесь

Также CompletableFuture - опция, позволяющая повысить минимальную версию SDK до 24. Она предоставляет расширенный API для построения цепочки операций для обработки и обработки результата:

CompletableFuture.supplyAsync(() -> performLongOperation())
    .thenAccept(result -> runOnUiThread(() -> handleResult(result)));

Здесь хороший гид до CompletableFuture

0 голосов
/ 04 марта 2020

AsyncTask был использован для выполнения длительной операции из потока Main. Тем не менее, было довольно уродливо писать, не говоря уже о том, что утечка памяти она несла с собой.

Я отказался от использования AsyncTask и перешел к Coroutines . Coroutines - это новейший инструмент в мире Android для решения длительных операций.

Поэтому вместо того, чтобы полагаться на старые альтернативы AsyncTask, перейдите к Coroutines. Co-routines легко написать, и слава богу, что они легки в глазах.

...