Chyba dokumentace: Zjevně registrované přijímače vysílání přijímají záměry ACTION_SHUTDOWN v systému Android 8.0

click fraud protection

Záměry Manifest Registered Broadcast jsou v Android Oreo omezeny pouze na několik a ACTION_SHUTDOWN mezi ně nepatří, nebo ano?

Android používá vysílací záměry pro spoustu věcí. Vývojáři aplikací jim mohou naslouchat, aby provedli určité akce, například když vysílaný záměr MEDIA_MOUNTED pro aplikace věděl, kdy byla karta SD připojena jako úložiště. Jako vývojář aplikace můžete pro tento účel naprogramovat přijímače vysílání a poté zavolat funkci při každém připojení média, například změnit výchozí adresář úložiště aplikace na kartu SD. K takovým věcem slouží vysílací záměry. Většinou se používají k vysílání určitých systémových událostí do aplikací, které mohou tyto informace potřebovat. Vysílací přijímače musí být registrovány v souboru Android Manifest nebo programově, když jsou v popředí.

Kvůli velkému množství výbojů paměti způsobené mnoha různými vývojáři implementujícími všechny druhy vysílání přijímačů pro často spouštěcí záměry se Google rozhodl omezit přístup k většině těchto vysílacích záměrů v systému Android 8.0 Oreo. Společnost však uznala, že existuje několik důležitých vysílacích záměrů, které jsou v pořádku stále poslouchat, protože se nevyskytují tak často, a proto mají malou šanci způsobit paměť problémy. Ony 

zveřejnil whitelist implicitního vysílání záměry, kterým mohou aplikace pro Android stále naslouchat, registrací vysílacích přijímačů v manifestu Android. Toto je rozsáhlý seznam a pokrývá téměř vše, co jako vývojář aplikací můžete potřebovat, s jedinou výjimkou.

Zdá se, že Google neuvedl záměr vysílání, který používá mnoho aplikací. To je ACTION_SHUTDOWN vysílací záměr. Tento záměr je odeslán, když se zařízení vypíná, což může být pro vývojáře aplikací velmi důležité, aby mohli rychle ukončit vše, co aplikace dělá, než bude proces ukončen. Přestože se tento záměr vysílání neobjevuje v seznamu povolených záměrů, aplikací umět ve skutečnosti to stále poslouchejte prostřednictvím přijímače vysílání registrovaného v Manifestu podle závazku na Android Git, jen jej Google zapomněl zahrnout do svého seznamu.

To je skvělé, že je skutečně na seznamu povolených, protože Google odstraňuje z aplikací možnost detekovat, kdy se zařízení vypíná by bylo špatné pro uživatele i vývojáře aplikací, protože některé aplikace by již nebyly schopny rychle ušetřit práci před vypnutím zařízení. Nejsme si úplně jisti, proč tento vysílací záměr není uveden na stránce Google pro vývojáře, ale mluvili jsme se zkušeným vývojářem Androidu CommonsWare a souhlasí s tím, že jde pravděpodobně o jednoduchou chybu v dokumentaci na straně Google. Nebylo by to podle něj poprvé, co se to stalo.