Dokumentasjonsfeil: Manifest registrerte kringkastingsmottakere mottar ACTION_SHUTDOWN hensikter i Android 8.0

Manifesterte registrerte kringkastingshensikter er begrenset til bare noen få i Android Oreo, og ACTION_SHUTDOWN er ikke en av dem, eller er det?

Android bruker kringkastingshensikter til mange ting. Apputviklere kan lytte etter at de utfører visse handlinger, for eksempel når MEDIA_MOUNTED kringkastingshensikt for applikasjoner å vite når et SD-kort har blitt montert som lagring. Som apputvikler kan du programmere kringkastingsmottakere til dette, for så å kalle opp en funksjon når media er montert, for eksempel for å endre appens standard lagringskatalog til SD-kortet. Denne typen ting er hva kringkastingshensikter brukes til. De brukes for det meste til å kringkaste visse systemhendelser til alle applikasjoner som trenger den informasjonen. Kringkastingsmottakere må enten være registrert i Android Manifest-filen eller programmatisk når de er i forgrunnen.

På grunn av en overflod av minnetrasking forårsaket av mange forskjellige utviklere som implementerer alle slags kringkasting mottakere for hyppig avfyring, bestemte Google seg for å begrense tilgangen til de fleste av disse kringkastingshensiktene i Android 8.0 Oreo. Selskapet erkjente imidlertid at det var et par viktige kringkastingshensikter som er i orden fortsatt bli lyttet etter siden de ikke forekommer så ofte og dermed har liten sjanse for å forårsake hukommelse problemer. De 

publiserte en hviteliste over implisitt kringkasting hensikter som Android-applikasjoner fortsatt kan lytte etter ved å registrere kringkastingsmottakere i Android-manifestet. Dette er en omfattende liste og dekker omtrent alt du som apputvikler kan trenge, med ett unntak.

Det ser ut til at Google ikke har listet opp en kringkastingshensikt som brukes av mange applikasjoner. Dette er ACTION_SHUTDOWN sende hensikt. Denne hensikten sendes når enheten slås av, noe som kan være svært viktig for apputviklere, slik at de raskt kan avvikle hva appen gjør før prosessen avbrytes. Til tross for at denne kringkastingshensikten ikke vises i listen over hvitelistede hensikter, applikasjoner kan faktisk fortsatt lytte etter den via en Manifest-registrert kringkastingsmottaker i henhold til en forpliktelse på Android Git, bare Google glemte å inkludere den i listen deres.

Dette er flott at det faktisk er hvitelistet, da Google fjerner muligheten fra applikasjoner til å oppdage når enheten slår seg av ville være dårlig for både brukere og apputviklere, ettersom noen applikasjoner ikke lenger vil kunne raskt lagre arbeid før en enhetsavslutning. Vi er ikke helt sikre på hvorfor denne kringkastingshensikten ikke er oppført på Googles side for utviklere, men vi snakket med en veteran Android-utvikler CommonsWare og han er enig i at det sannsynligvis er en enkel dokumentasjonsfeil fra Googles side. Det ville ikke være første gang dette har skjedd, ifølge ham.