Chyba dokumentácie: Zjavné registrované prijímače vysielania prijímajú zámery ACTION_SHUTDOWN v systéme Android 8.0

click fraud protection

Zámery Manifest Registered Broadcast sú v systéme Android Oreo obmedzené len na niekoľko a ACTION_SHUTDOWN nie je jedným z nich, alebo áno?

Android používa vysielacie zámery na veľa vecí. Vývojári aplikácií ich môžu počúvať, aby vykonali určité akcie, napríklad keď sa zámer vysielania MEDIA_MOUNTED pre aplikácie dozvie, kedy bola karta SD pripojená ako úložisko. Ako vývojár aplikácie môžete na to naprogramovať prijímače vysielania a potom zavolať funkciu pri každom pripojení média, napríklad zmeniť predvolený priečinok úložiska aplikácie na kartu SD. Na takéto veci sa používajú vysielacie zámery. Väčšinou sa používajú na vysielanie určitých systémových udalostí do všetkých aplikácií, ktoré môžu tieto informácie potrebovať. Vysielacie prijímače musia byť registrované v súbore Android Manifest alebo programovo, keď sú v popredí.

Kvôli množstvu vybíjania pamäte spôsobeného mnohými rôznymi vývojármi implementujúcimi všetky druhy vysielania prijímačov pre často vysielacie zámery sa Google rozhodol obmedziť prístup k väčšine týchto vysielacích zámerov v systéme Android 8.0 Oreo. Spoločnosť však uznala, že existuje niekoľko dôležitých vysielacích zámerov, ktoré sú v poriadku stále ich treba počúvať, pretože sa nevyskytujú až tak často, a preto majú malú šancu vyvolať pamäť problémy. Oni 

zverejnil whitelist implicitného vysielania Zámery, ktoré môžu aplikácie pre Android stále počúvať, registráciou vysielacích prijímačov v manifeste Android. Toto je rozsiahly zoznam a zahŕňa takmer všetko, čo ako vývojár aplikácií môžete potrebovať, s jednou výnimkou.

Zdá sa, že spoločnosť Google neuviedla zámer vysielania, ktorý používajú mnohé aplikácie. To je ACTION_SHUTDOWN vysielací zámer. Tento zámer sa odosiela, keď sa zariadenie vypína, čo môže byť pre vývojárov aplikácií veľmi dôležité, aby mohli rýchlo ukončiť čokoľvek, čo aplikácia robí, skôr ako sa proces ukončí. Napriek tomu, že sa tento vysielací zámer nezobrazuje v zozname povolených zámerov, aplikácií môcť v skutočnosti ho stále počúvate prostredníctvom vysielacieho prijímača registrovaného v Manifeste podľa záväzku na Android Git, len Google ho zabudol zahrnúť do svojho zoznamu.

Je skvelé, že je skutočne zaradený na bielu listinu, pretože Google odstraňuje z aplikácií možnosť zistiť, kedy sa zariadenie vypína by bolo zlé pre používateľov aj vývojárov aplikácií, pretože niektoré aplikácie by už neboli schopné rýchlo ukladať prácu pred vypnutím zariadenia. Nie sme si úplne istí, prečo tento vysielací zámer nie je uvedený na stránke Google pre vývojárov, ale hovorili sme so skúseným vývojárom Androidu CommonsWare a súhlasí s tým, že ide pravdepodobne o jednoduchú chybu v dokumentácii zo strany spoločnosti Google. Nebolo by to podľa neho prvýkrát, čo sa to stalo.