A Google megszünteti az Android AsyncTask API-ját az Android 11-ben

click fraud protection

Az aszinkron logika Android API-ja, az AsyncTask hamarosan kifut. Az AOSP kötelezettségvállalása szerint az API megszűnik az Android 11-ben.

Az Android AsyncTask már évek óta alapvető eszköz a kezdő és a tapasztalt fejlesztők számára. Ha valaha is keresett a Google-on egy oktatóanyagot az Android bármilyen aszinkron logikájához, akkor valószínűleg az első néhány eredmény az AsyncTask használatát javasolja. Ez sem véletlenszerű választás. Az AsyncTask eredetileg a háttérműveletek és az alkalmazás felhasználói felülete közötti interakció egyszerűsítésére jött létre. Egy ideig ez jól sikerült. Az AsyncTask valóban segít az aszinkron feladatok egyszerűsítésében. Ez azonban nem jelenti azt, hogy tökéletes.

Egy dolog, amit sok alkalmazásnak meg kell tennie, az információk megszerzése egy távoli szerverről. Mivel a hálózati kérések eltarthatnak egy ideig, általában fontos, hogy aszinkron módon hajtsák végre azokat, hogy ne okozzák az alkalmazás lefagyását. A művelet befejezése után a felhasználói felület frissíthető. Előfordulhat azonban, hogy mire a hálózati kérés befejeződik, a felhasználói felület megfelelő része már nem létezik, ami összeomlásokat vagy egyéb hibákat okozhat. Noha az AsyncTask egyszerűbbé teszi az egész folyamatot, nem veszi figyelembe az Android alkalmazás életciklusát. Ez azt jelenti, hogy nincs beépített védelem az AsyncTask befejezése ellen a felhasználói felület módosítása után. Természetesen lehetőség van ellenőrzések és egyéb védelem manuális hozzáadására, de ez sok ismétlődő kódot ad hozzá (AKA boilerplate). Az ehhez hasonló problémák miatt az AsyncTask valahogy félreesett. A Google nem sokat változtatott a működésén.

Nos, úgy tűnik, a Google véleménye szerint az AsyncTask nem menthető. Egy közelmúltbeli AOSP-commit során az AsyncTask elavult volt, hasonló okokra hivatkozva, mint amiről az imént beszéltem. Bár ez nem igazán jelent hatalmas változást a végfelhasználók számára, a fejlesztők számára nagyon sokat jelenthet. Ha régebbi kódbázist tart fenn, vagy csak most kezdi az aszinkron feladatokkal az Androidot, akkor valószínűleg egy csomó kódot kell módosítania. Szerencsére azonban a Google nem hagyta a fejlesztőket a porban.

Az AsyncTask korlátai miatt idővel alternatívák jelentek meg, mint például az RxJava és a Kotlin új (ish) Coroutines könyvtára. Ezek az alternatívák általában sokkal rugalmasabbak és több szolgáltatást nyújtanak, mint az AsyncTask, így nagy népszerűségre tettek szert. Az AsyncTask elavulásáról szóló közleményében a Google a Java Concurrency keretrendszer vagy a Kotlin Coroutines használatát javasolja.

Én személy szerint már elkezdtem használni a Kotlin's Coroutines-t, és nem néztem vissza. Természetesen tudom, hogy sokan szorosan integrálták kódjukat az AsyncTask köré, így ez valószínűleg legalább egy kis kényelmetlenséget jelent számukra. Még jó, hogy rengeteg alternatíva közül lehet választani. Lehet, hogy bosszantó a kód megváltoztatása, de ezúttal legalább lehetséges.

Ha további részletekre van szüksége, nézze meg a kötelezettségvállalást itt. A kötelezettségvállalást a mai napon összevonták, és hacsak nincs készülőben egy Android-karbantartási kiadás, ez a változás jövőre az Android 11-ben is megjelenik.