„Google“ nutraukia „Android“ „AsyncTask“ API naudojimą „Android 11“.

„Android“ API, skirta asinchroninei logikai, „AsyncTask“, pradeda veikti. Remiantis AOSP įsipareigojimu, API bus nebenaudojama „Android 11“.

Jau daugelį metų „Android“ „AsyncTask“ yra pagrindinis įrankis pradedantiesiems ir patyrusiems kūrėjams. Jei kada nors naudojote „Google“ mokymo programą, skirtą bet kokiai asinchroninei logikai sistemoje „Android“, yra tikimybė, kad keli pirmieji rezultatai rodo, kad reikia naudoti „AsyncTask“. Tai taip pat nėra atsitiktinis pasirinkimas. „AsyncTask“ iš pradžių buvo sukurta siekiant supaprastinti foninių operacijų ir programos vartotojo sąsajos sąveiką. Kurį laiką tai padarė gerai. AsyncTask tikrai padeda supaprastinti asinchronines užduotis. Tačiau tai nereiškia, kad jis tobulas.

Vienas dalykas, kurį turi padaryti daugelis programų, yra gauti informaciją iš nuotolinio serverio. Kadangi tinklo užklausos gali užtrukti, paprastai svarbu jas atlikti asinchroniškai, kad programa neužstotų. Kai operacija bus baigta, vartotojo sąsaja gali būti atnaujinta. Tačiau gali būti, kad pasibaigus tinklo užklausai atitinkamos vartotojo sąsajos dalies nebeliks, o tai gali sukelti strigčių ar kitų klaidų. Nors „AsyncTask“ supaprastina bendrą procesą, jis nepaiso „Android“ programos gyvavimo ciklo. Tai reiškia, kad nėra integruotos apsaugos nuo „AsyncTask“ užbaigimo pakeitus vartotojo sąsają. Žinoma, galima rankiniu būdu pridėti čekius ir kitas apsaugos priemones, tačiau tai prideda daug pasikartojančio kodo (AKA boilerplate). Dėl tokių problemų „AsyncTask“ tarsi nukrito į šalį. „Google“ taip pat nepadarė daug savo veikimo pakeitimų.

Na, panašu, kad „Google“ mano, kad „AsyncTask“ nėra taupoma. Neseniai vykdant AOSP įsipareigojimą, „AsyncTask“ buvo nebenaudojamas, nurodant panašias priežastis, apie kurias ką tik kalbėjau. Nors galutiniams vartotojams tai tikrai nėra didžiulis pokytis, kūrėjams tai gali reikšti daug. Jei naudojate senesnę kodų bazę arba tik pradedate atlikti asinchronines užduotis sistemoje „Android“, greičiausiai turėsite pakeisti daugybę kodų. Laimei, „Google“ nepaliko kūrėjų dulkėse.

Dėl „AsyncTask“ apribojimų laikui bėgant atsirado alternatyvų, tokių kaip „RxJava“ ir „Kotlin“ nauja (ish) Coroutines biblioteka. Šios alternatyvos paprastai turi daug daugiau lankstumo ir funkcijų nei AsyncTask, todėl jos įgijo nemažai populiarumo. Pranešime apie „AsyncTask“ naudojimo nutraukimą „Google“ rekomenduoja naudoti „Java“ suderinamumo sistemą arba „Kotlin Coroutines“.

Asmeniškai aš jau pradėjau naudoti Kotlin's Coroutines ir nežiūrėjau atgal. Žinoma, žinau, kad daugelis žmonių glaudžiai integravo savo kodą aplink „AsyncTask“, todėl jiems tai tikriausiai yra bent nedidelis nepatogumas. Gerai, kad yra daug alternatyvų, iš kurių galima rinktis. Gali būti nemalonu pakeisti kodą, bet bent jau šį kartą tai įmanoma.

Jei norite daugiau informacijos, galite patikrinti įsipareigojimą čia. Įsipareigojimai buvo sujungti anksčiau šiandien ir, nebent ruošiamasi išleisti „Android“ priežiūros versiją, kitais metais šis pakeitimas atsispindės „Android 11“.