Dokumentationsfel: Manifest registrerade sändningsmottagare tar emot ACTION_SHUTDOWN avsikter i Android 8.0

click fraud protection

Manifesta registrerade sändningsavsikter är begränsade till endast ett fåtal i Android Oreo, och ACTION_SHUTDOWN är inte en av dem, eller är det?

Android använder sändningsavsikter för många saker. Apputvecklare kan lyssna efter dem för att utföra vissa åtgärder, till exempel när MEDIA_MOUNTED sändning avsikt för applikationer att veta när ett SD-kort har monterats som lagring. Som apputvecklare kan du programmera broadcast-mottagare för detta, sedan anropa en funktion när media är monterat, till exempel för att ändra appens standardlagringskatalog till SD-kortet. Det här är vad sändningsuppsåt används till. De används oftast för att sända vissa systemhändelser till alla applikationer som kan behöva den informationen. Sändningsmottagare måste antingen registreras i Android Manifest-filen eller programmatiskt när de är i förgrunden.

På grund av ett överflöd av minnesstötning orsakad av många olika utvecklare som implementerar alla typer av sändningar mottagare för ofta skjutande avsikter, beslutade Google att begränsa åtkomsten till de flesta av dessa sändningsavsikter i Android 8.0 Oreo. Företaget insåg dock att det fanns ett par viktiga sändningsavsikter som är okej fortfarande lyssnas efter eftersom de inte förekommer så ofta och därför har liten chans att orsaka minne frågor. De 

publicerade en vitlista över implicita sändningar avsikter som Android-applikationer fortfarande kan lyssna efter genom att registrera sändningsmottagare i Android Manifest. Det här är en omfattande lista och täcker nästan allt du som apputvecklare kan behöva, med ett undantag.

Det verkar som att Google inte listade en sändningsavsikt som används av många applikationer. Det här är ACTION_SHUTDOWN sändningsuppsåt. Denna avsikt skickas när enheten stängs av, vilket kan vara mycket viktigt för apputvecklare så att de snabbt kan varva ner vad appen än gör innan processen avbryts. Trots att denna sändningsavsikt inte förekommer i listan över vitlistade avsikter, ansökningar burk faktiskt fortfarande lyssna efter den via en Manifest-registrerad sändningsmottagare enligt ett åtagande på Android Git, bara Google glömde att inkludera den i sin lista.

Det här är bra att det faktiskt är vitlistat, eftersom Google tar bort möjligheten från applikationer att upptäcka när enheten stängs av skulle vara dåligt för både användare och apputvecklare, eftersom vissa applikationer inte längre snabbt skulle kunna spara arbete innan en enhet stängs av. Vi är inte helt säkra på varför denna sändningsavsikt inte finns med på Googles sida för utvecklare, men vi pratade med en veteran Android-utvecklare CommonsWare och han håller med om att det troligen är ett enkelt dokumentationsfel från Googles sida. Det skulle inte vara första gången det händer, enligt honom.