Google ukončuje podporu rozhraní Android AsyncTask API v systému Android 11

click fraud protection

Android API pro asynchronní logiku, AsyncTask, je na cestě ven. Podle potvrzení AOSP bude API v Androidu 11 zastaralé.

Již několik let je AsyncTask pro Android základním nástrojem pro začátečníky i zkušené vývojáře. Pokud jste si někdy vyhledali na Googlu návod pro jakýkoli druh asynchronní logiky v Androidu, je pravděpodobné, že prvních několik výsledků naznačuje použití AsyncTask. Není to tak, že by to byla náhodná volba. AsyncTask byl původně vytvořen pro zjednodušení interakce mezi operacemi na pozadí a uživatelským rozhraním aplikace. Chvíli to dělalo dobře. AsyncTask skutečně pomáhá zjednodušit asynchronní úlohy. To však neznamená, že je to dokonalé.

Jedna věc, kterou musí mnoho aplikací udělat, je získat informace ze vzdáleného serveru. Protože síťové požadavky mohou chvíli trvat, je obvykle důležité je provádět asynchronně, aby nezpůsobily zamrznutí aplikace. Po dokončení operace lze uživatelské rozhraní aktualizovat. Je však možné, že v době, kdy je síťový požadavek dokončen, příslušná část uživatelského rozhraní již neexistuje, což může způsobit pády nebo jiné chyby. AsyncTask sice celý proces zjednodušuje, ale nerespektuje životní cyklus aplikací Androidu. To znamená, že neexistuje žádná vestavěná ochrana proti dokončení AsyncTask po změně uživatelského rozhraní. Samozřejmě je možné ručně přidat kontroly a další ochrany, ale to přidává spoustu opakování kódu (AKA standard). Kvůli problémům, jako je tento, AsyncTask tak trochu upadl. Google také neudělal mnoho změn v tom, jak to funguje.

Zdá se, že názor společnosti Google je takový, že AsyncTask nelze zachránit. V nedávném potvrzení AOSP byl AsyncTask zastaralý a uvedl důvody podobné těm, o kterých jsem právě mluvil. I když to pro koncové uživatele není velká změna, pro vývojáře to může znamenat hodně. Pokud udržujete starší kódovou základnu nebo právě začínáte s asynchronními úlohami v systému Android, pravděpodobně budete muset změnit spoustu kódu. Google však naštěstí nenechal vývojáře v prachu.

Kvůli omezením AsyncTask se postupem času objevily alternativy, jako je RxJava a Kotlinova nová (ish) knihovna Coroutines. Tyto alternativy mívají mnohem větší flexibilitu a funkce než AsyncTask, takže si získaly poměrně velkou popularitu. Google ve svém oznámení o ukončení podpory pro AsyncTask doporučuje používat Java Concurrency framework nebo Kotlin Coroutines.

Osobně jsem již začal používat Kotlin's Coroutines a neohlédl jsem se zpět. Samozřejmě vím, že mnoho lidí integrovalo svůj kód těsně kolem AsyncTask, takže je to pro ně pravděpodobně alespoň mírná nepříjemnost. Je dobře, že existuje spousta alternativ na výběr. Změna kódu může být otravná, ale tentokrát je to alespoň možné.

Pokud chcete další podrobnosti, můžete se podívat na potvrzení tady. Potvrzení bylo dnes sloučeno dříve, a pokud se neplánuje vydání údržby pro Android, uvidíme, že se tato změna projeví v Androidu 11 příští rok.