Σφάλμα τεκμηρίωσης: Οι δηλωμένοι εγγεγραμμένοι δέκτες εκπομπής λαμβάνουν προθέσεις ACTION_SHUTDOWN στο Android 8.0

Οι προθέσεις του Manifest Registered Broadcast περιορίζονται σε λίγες μόνο στο Android Oreo και το ACTION_SHUTDOWN δεν είναι ένα από αυτά ή μήπως;

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

Λόγω της αφθονίας του thrashing μνήμης που προκαλείται από πολλούς διαφορετικούς προγραμματιστές που εφαρμόζουν όλα τα είδη εκπομπής δέκτες για συχνές προθέσεις πυροδότησης, η Google αποφάσισε να περιορίσει την πρόσβαση στις περισσότερες από αυτές τις προθέσεις εκπομπής στο Android 8,0 Oreo. Η εταιρεία αναγνώρισε, ωστόσο, ότι υπήρχαν μερικές σημαντικές προθέσεις εκπομπής που είναι εντάξει εξακολουθούν να ακούγονται, καθώς δεν εμφανίζονται τόσο συχνά και επομένως έχουν λίγες πιθανότητες να προκαλέσουν μνήμη θέματα. Αυτοί δημοσίευσε μια λευκή λίστα σιωπηρών μεταδόσεων προθέσεις που εξακολουθούν να μπορούν να ακούν οι εφαρμογές Android, καταχωρώντας δέκτες εκπομπής στο Android Manifest. Αυτή είναι μια εκτενής λίστα και καλύπτει σχεδόν όλα όσα μπορεί να χρειαστείτε ως προγραμματιστής εφαρμογών, με μια εξαίρεση.

Φαίνεται ότι η Google δεν απαρίθμησε μια πρόθεση μετάδοσης που χρησιμοποιείται από πολλές εφαρμογές. Αυτό είναι το ACTION_SHUTDOWN πρόθεση εκπομπής. Αυτή η πρόθεση αποστέλλεται όταν η συσκευή τερματίζεται, κάτι που μπορεί να είναι πολύ σημαντικό για τους προγραμματιστές εφαρμογών, ώστε να μπορούν να τερματίσουν γρήγορα ό, τι κάνει η εφαρμογή πριν τερματιστεί η διαδικασία. Παρά το γεγονός ότι αυτή η πρόθεση εκπομπής δεν εμφανίζεται στη λίστα των προθέσεων, των εφαρμογών στη λίστα επιτρεπόμενων μπορώ Στην πραγματικότητα, εξακολουθεί να το ακούτε μέσω ενός δέκτη εκπομπής καταχωρημένου στο Manifest σύμφωνα με μια δέσμευση στο Android Git, απλώς η Google ξέχασε να το συμπεριλάβει στη λίστα της.

Αυτό είναι υπέροχο που είναι στην πραγματικότητα στη λίστα επιτρεπόμενων, καθώς η Google αφαιρεί τη δυνατότητα από τις εφαρμογές να ανιχνεύουν πότε κλείνει η συσκευή θα ήταν κακό τόσο για τους χρήστες όσο και για τους προγραμματιστές εφαρμογών, καθώς ορισμένες εφαρμογές δεν θα μπορούν πλέον να αποθηκεύουν γρήγορα την εργασία πριν από τον τερματισμό της συσκευής. Δεν είμαστε απολύτως σίγουροι γιατί αυτή η πρόθεση μετάδοσης δεν αναφέρεται στη σελίδα της Google για προγραμματιστές, αλλά μιλήσαμε με βετεράνο προγραμματιστή Android CommonsWare και συμφωνεί ότι πιθανότατα πρόκειται για ένα απλό σφάλμα τεκμηρίωσης εκ μέρους της Google. Δεν θα ήταν η πρώτη φορά που συμβαίνει αυτό, σύμφωνα με τον ίδιο.