Eroare de documentare: receptorii de difuzare înregistrate în manifest primesc intenții ACTION_SHUTDOWN în Android 8.0

Intențiile de difuzare înregistrate în Manifest sunt limitate la doar câteva în Android Oreo, iar ACTION_SHUTDOWN nu este una dintre ele, sau nu?

Android folosește intențiile de difuzare pentru o mulțime de lucruri. Dezvoltatorii de aplicații îi pot asculta pentru a efectua anumite acțiuni, cum ar fi atunci când intenția de difuzare MEDIA_MOUNTED pentru aplicații să știe când un card SD a fost montat ca stocare. În calitate de dezvoltator de aplicații, puteți programa receptoare de transmisie pentru aceasta, apoi puteți apela o funcție ori de câte ori este montat media, de exemplu, pentru a schimba directorul de stocare implicit al aplicației pe cardul SD. Pentru acest gen de lucruri sunt folosite intențiile de difuzare. Acestea sunt utilizate în principal pentru a difuza anumite evenimente de sistem către orice aplicație care ar putea avea nevoie de acele informații. Receptoarele de difuzare trebuie să fie fie înregistrate în fișierul Manifest Android, fie în mod programatic când sunt în prim-plan.

Datorită abundenței de dezordine a memoriei cauzate de mulți dezvoltatori diferiți care implementează tot felul de transmisii receptori pentru intenții de declanșare frecvente, Google a decis să restricționeze accesul la majoritatea acestor intenții de difuzare în Android 8.0 Oreo. Compania a recunoscut, totuși, că au existat câteva intenții importante de difuzare care sunt în regulă fi încă ascultat, deoarece acestea nu apar atât de des și, prin urmare, au șanse mici de a provoca memorie probleme. ei a publicat o listă albă de difuzare implicită intenții pe care aplicațiile Android le pot asculta în continuare prin înregistrarea receptoarelor de transmisie în Manifestul Android. Aceasta este o listă extinsă și acoperă aproape tot ceea ce aveți nevoie ca dezvoltator de aplicații, cu o singură excepție.

Se pare că Google nu a enumerat o intenție de difuzare care este folosită de multe aplicații. Acesta este ACTION_SHUTDOWN intenția de difuzare. Această intenție este trimisă atunci când dispozitivul se închide, ceea ce poate fi foarte important pentru dezvoltatorii de aplicații, astfel încât aceștia să poată opri rapid orice face aplicația înainte ca procesul să fie oprit. În ciuda faptului că această intenție de difuzare nu apare în lista de intenții incluse în lista albă, aplicațiile poate sa de fapt, încă ascultați-l printr-un receptor de transmisie înregistrat în Manifest conform unui commit pe Android Git, doar Google a uitat să-l includă în lista lor.

Este grozav că este de fapt trecut pe lista albă, deoarece Google elimină capacitatea aplicațiilor de a detecta când dispozitivul se închide ar fi rău atât pentru utilizatori, cât și pentru dezvoltatorii de aplicații, deoarece unele aplicații nu ar mai putea salva rapid munca înainte de închiderea dispozitivului. Nu suntem pe deplin siguri de ce această intenție de difuzare nu este listată pe pagina Google pentru dezvoltatori, dar am discutat cu un dezvoltator Android veteran. CommonsWare și el este de acord că este probabil o simplă eroare de documentare din partea Google. Nu ar fi prima dată când se întâmplă asta, potrivit lui.