Errore di documentazione: i ricevitori di trasmissione registrati manifest ricevono intenti ACTION_SHUTDOWN in Android 8.0

Gli intenti di trasmissione registrata manifesta sono limitati a pochi in Android Oreo e ACTION_SHUTDOWN non è uno di questi, o no?

Android utilizza intenti di trasmissione per molte cose. Gli sviluppatori di app possono ascoltarli mentre eseguono determinate azioni, ad esempio quando l'intento di trasmissione MEDIA_MOUNTED fa sì che le applicazioni sappiano quando una scheda SD è stata montata come memoria. In qualità di sviluppatore di app, puoi programmare i ricevitori di trasmissione per questo, quindi richiamare una funzione ogni volta che viene montato il supporto, ad esempio per modificare la directory di archiviazione predefinita dell'app sulla scheda SD. Questo genere di cose è ciò per cui vengono utilizzati gli intenti di trasmissione. Vengono utilizzati principalmente per trasmettere determinati eventi di sistema a tutte le applicazioni che potrebbero aver bisogno di tali informazioni. I ricevitori broadcast devono essere registrati nel file Manifest Android o a livello di codice quando sono in primo piano.

A causa dell'abbondanza di problemi di memoria causati da molti sviluppatori diversi che implementano tutti i tipi di trasmissione ricevitori per intenti di trasmissione frequenti, Google ha deciso di limitare l'accesso alla maggior parte di questi intenti di trasmissione in Android 8.0 Oreo. La società ha riconosciuto, tuttavia, che c'erano un paio di importanti intenti di trasmissione a cui andava bene devono ancora essere ascoltati poiché non si verificano così spesso e quindi hanno poche possibilità di causare memoria problemi. Essi ha pubblicato una lista bianca di trasmissioni implicite intent che le applicazioni Android possono ancora ascoltare registrando i ricevitori di trasmissione nel Manifest Android. Questo è un elenco ampio e copre praticamente tutto ciò di cui potresti aver bisogno come sviluppatore di app, con un'eccezione.

Sembra che Google non abbia elencato un intento di trasmissione utilizzato da molte applicazioni. Questo è il AZIONE_SPEGNIMENTO intento di trasmissione. Questo intento viene inviato quando il dispositivo si sta spegnendo, il che può essere molto importante per gli sviluppatori di app in modo che possano concludere rapidamente qualsiasi cosa stia facendo l'app prima che il processo venga interrotto. Nonostante questo intento di trasmissione non compaia nell'elenco degli intenti e delle applicazioni autorizzati Potere infatti lo ascolta ancora tramite un ricevitore di trasmissione registrato su Manifest secondo un impegno su Android Git, solo Google ha dimenticato di includerlo nel proprio elenco.

È fantastico che sia effettivamente inserito nella whitelist, poiché Google rimuove la capacità delle applicazioni di rilevare quando il dispositivo si sta spegnendo sarebbe dannoso sia per gli utenti che per gli sviluppatori di app, poiché alcune applicazioni non sarebbero più in grado di salvare rapidamente il lavoro prima dello spegnimento del dispositivo. Non siamo del tutto sicuri del motivo per cui questo intento di trasmissione non sia elencato nella pagina di Google per gli sviluppatori, ma abbiamo parlato con uno sviluppatore Android veterano Commonsware e concorda sul fatto che probabilmente si tratta di un semplice errore di documentazione da parte di Google. Non sarebbe la prima volta che ciò accade, secondo lui.