Dokumentationsfehler: Manifest-registrierte Rundfunkempfänger empfangen ACTION_SHUTDOWN-Absichten in Android 8.0

Manifest Registered Broadcast-Absichten sind in Android Oreo auf nur wenige beschränkt, und ACTION_SHUTDOWN gehört nicht dazu, oder doch?

Android verwendet Broadcast-Intents für viele Dinge. App-Entwickler können darauf warten, dass sie bestimmte Aktionen ausführen, z. B. wenn MEDIA_MOUNTED die Sendeabsicht sendet, damit Anwendungen wissen, wann eine SD-Karte als Speicher bereitgestellt wurde. Als App-Entwickler können Sie Broadcast-Receiver dafür programmieren und dann beim Mounten von Medien eine Funktion aufrufen, um beispielsweise das Standardspeicherverzeichnis der App auf die SD-Karte zu ändern. Für solche Dinge werden Broadcast-Intents verwendet. Sie werden hauptsächlich verwendet, um bestimmte Systemereignisse an alle Anwendungen zu senden, die diese Informationen benötigen. Rundfunkempfänger müssen entweder in der Android-Manifestdatei oder programmgesteuert im Vordergrund registriert werden.

Aufgrund einer Fülle von Speicherüberlastungen, die durch viele verschiedene Entwickler verursacht werden, die alle Arten von Broadcasts implementieren Da Google Empfänger für häufig sendende Intents verwendet, hat Google beschlossen, den Zugriff auf die meisten dieser Broadcast-Intents in Android einzuschränken 8,0 Oreo. Das Unternehmen erkannte jedoch, dass es einige wichtige Sendeabsichten gab, die in Ordnung sind Dennoch ist auf sie zu achten, da sie nicht allzu oft vorkommen und daher kaum eine Chance haben, Gedächtnisstörungen zu verursachen Probleme. Sie 

veröffentlichte eine Whitelist der impliziten Übertragung Absichten, auf die Android-Anwendungen weiterhin warten können, indem sie Rundfunkempfänger im Android-Manifest registrieren. Dies ist eine umfangreiche Liste, die bis auf eine Ausnahme nahezu alles abdeckt, was Sie als App-Entwickler benötigen.

Es scheint, dass Google keine Broadcast-Absicht aufgeführt hat, die von vielen Anwendungen verwendet wird. Dies ist das ACTION_SHUTDOWN Sendeabsicht. Dieser Intent wird gesendet, wenn das Gerät heruntergefahren wird. Dies kann für App-Entwickler sehr wichtig sein, damit sie schnell alle Aktivitäten der App beenden können, bevor der Prozess abgebrochen wird. Obwohl diese Sendeabsicht nicht in der Liste der auf der Positivliste aufgeführten Absichten und Anwendungen erscheint dürfen Tatsächlich hören Sie es immer noch über einen bei Manifest registrierten Rundfunkempfänger gemäß einem Commit auf dem Android Git, nur hat Google vergessen, es in seine Liste aufzunehmen.

Es ist großartig, dass es tatsächlich auf der Whitelist steht, da Google Anwendungen die Möglichkeit entzieht, zu erkennen, wann das Gerät heruntergefahren wird Dies wäre sowohl für Benutzer als auch für App-Entwickler schlecht, da einige Anwendungen nicht mehr in der Lage wären, die Arbeit schnell zu speichern, bevor das Gerät heruntergefahren wird. Wir sind uns nicht ganz sicher, warum diese Übertragungsabsicht nicht auf der Google-Seite für Entwickler aufgeführt ist, aber wir haben mit einem erfahrenen Android-Entwickler gesprochen CommonsWare und er stimmt zu, dass es sich wahrscheinlich um einen einfachen Dokumentationsfehler von Google handelt. Seiner Meinung nach wäre es nicht das erste Mal, dass dies passiert.