Η Google καταργεί το AsyncTask API του Android στο Android 11

click fraud protection

Το Android API για ασύγχρονη λογική, AsyncTask, βρίσκεται σε εξέλιξη. Σύμφωνα με μια δέσμευση AOSP, το API θα καταργηθεί στο Android 11.

Εδώ και χρόνια, το AsyncTask του Android είναι ένα βασικό εργαλείο τόσο για αρχάριους όσο και για έμπειρους προγραμματιστές. Εάν έχετε αναζητήσει ποτέ στο Google ένα σεμινάριο για οποιοδήποτε είδος ασύγχρονης λογικής στο Android, το πιθανότερο είναι ότι τα πρώτα αποτελέσματα προτείνουν τη χρήση του AsyncTask. Ούτε αυτό είναι μια τυχαία επιλογή. Το AsyncTask δημιουργήθηκε αρχικά για να απλοποιήσει την αλληλεπίδραση μεταξύ των λειτουργιών παρασκηνίου και της διεπαφής χρήστη μιας εφαρμογής. Για λίγο το έκανε καλά. Το AsyncTask βοηθά πραγματικά στην απλοποίηση των ασύγχρονων εργασιών. Αυτό όμως δεν σημαίνει ότι είναι τέλειο.

Ένα πράγμα που πρέπει να κάνουν πολλές εφαρμογές είναι να πάρουν πληροφορίες από έναν απομακρυσμένο διακομιστή. Δεδομένου ότι τα αιτήματα δικτύου μπορεί να διαρκέσουν λίγο, είναι συνήθως σημαντικό να τα κάνετε ασύγχρονα, ώστε να μην προκαλέσουν το πάγωμα της εφαρμογής. Μόλις ολοκληρωθεί η λειτουργία, η διεπαφή χρήστη μπορεί να ενημερωθεί. Ωστόσο, είναι πιθανό μέχρι να ολοκληρωθεί το αίτημα δικτύου, το σχετικό τμήμα της διεπαφής χρήστη να μην υπάρχει πλέον, γεγονός που μπορεί να προκαλέσει σφάλματα ή άλλα σφάλματα. Ενώ το AsyncTask κάνει τη συνολική διαδικασία πιο απλή, δεν σέβεται τον κύκλο ζωής της εφαρμογής του Android. Αυτό σημαίνει ότι δεν υπάρχει ενσωματωμένη προστασία έναντι ενός AsyncTask που τελειώνει μετά από μια αλλαγή διεπαφής χρήστη. Φυσικά, είναι δυνατή η μη αυτόματη προσθήκη επιταγών και άλλων προστασιών, αλλά αυτό προσθέτει πολλούς κωδικούς επανάληψης (ΑΚΑ boilerplate). Εξαιτίας προβλημάτων όπως αυτό, το AsyncTask έπεσε στην άκρη. Η Google επίσης δεν έχει κάνει πολλές αλλαγές στον τρόπο λειτουργίας της.

Λοιπόν, φαίνεται ότι η γνώμη της Google είναι ότι το AsyncTask είναι πέρα ​​από την αποθήκευση. Σε μια πρόσφατη δέσμευση AOSP, το AsyncTask καταργήθηκε, αναφέροντας παρόμοιους λόγους με αυτούς για τους οποίους μόλις μίλησα. Αν και αυτό δεν είναι πραγματικά μια τεράστια αλλαγή για τους τελικούς χρήστες, μπορεί να σημαίνει πολλά για τους προγραμματιστές. Εάν διατηρείτε μια παλαιότερη βάση κώδικα ή μόλις ξεκινάτε με ασύγχρονες εργασίες στο Android, πιθανότατα θα χρειαστεί να αλλάξετε ένα σωρό κώδικα. Ευτυχώς, όμως, η Google δεν έχει αφήσει τους προγραμματιστές στη σκόνη.

Λόγω των περιορισμών του AsyncTask, με την πάροδο του χρόνου εμφανίστηκαν εναλλακτικές λύσεις, όπως το RxJava και η νέα (ish) βιβλιοθήκη Coroutines του Kotlin. Αυτές οι εναλλακτικές τείνουν να έχουν πολύ μεγαλύτερη ευελιξία και δυνατότητες από το AsyncTask, επομένως έχουν κερδίσει αρκετή δημοτικότητα. Στην ειδοποίηση κατάργησης για το AsyncTask, η Google συνιστά τη χρήση του πλαισίου ταυτόχρονης λειτουργίας της Java ή των Kotlin Coroutines.

Προσωπικά, έχω ήδη αρχίσει να χρησιμοποιώ τις Κορουτίνες του Κότλιν και δεν έχω κοιτάξει πίσω. Φυσικά, γνωρίζω ότι πολλοί άνθρωποι έχουν ενσωματώσει τον κώδικά τους στενά γύρω από το AsyncTask, οπότε αυτό είναι πιθανώς τουλάχιστον μια μικρή ταλαιπωρία για αυτούς. Είναι καλό που υπάρχουν πολλές εναλλακτικές για να διαλέξετε. Μπορεί να είναι ενοχλητικό να αλλάξετε τον κωδικό σας, αλλά τουλάχιστον είναι δυνατό αυτή τη φορά.

Εάν θέλετε περισσότερες λεπτομέρειες, μπορείτε να ελέγξετε τη δέσμευση εδώ. Η δέσμευση συγχωνεύτηκε νωρίτερα σήμερα και, εκτός αν υπάρχει μια έκδοση συντήρησης Android στα σκαριά, θα δούμε αυτή την αλλαγή να αντικατοπτρίζεται στο Android 11 του επόμενου έτους.