Ich bin auf diesen Begriff in der Android-Dokumentation mit der zugehörigen Definition gestoßen
Hierbei handelt es sich um Broadcasts, deren Daten nach Abschluss vom System gespeichert werden, sodass Clients diese Daten schnell abrufen können, ohne auf die nächste Broadcast warten zu müssen.
Was heißt das? Kann jemand seine Verwendung anhand eines bestimmten Beispiels erläutern? Ich glaube, wir müssen eine Erlaubnis beantragen, um diese Absicht zu nutzen. Warum so?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
android
android-intent
Shouvik
quelle
quelle
Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.
Antworten:
Wenn eine Aktivität
onPause
mit einer normalen Sendung anruft , kann der Empfang der Sendung verpasst werden. Eine Sticky-Sendung kann nach dem Start in überprüft werdenonResume
.Update 23.06.2020
Sticky-Sendungen sind veraltet.
Siehe
sendStickyBroadcast
Dokumentation .Implementieren
Ressourcen
In Verbindung stehender Beitrag: Was ist der Unterschied zwischen sendStickyBroadcast und sendBroadcast in Android?
Siehe
removeStickyBroadcast(Intent)
und auf API Level 5 +isInitialStickyBroadcast()
zur Verwendung in den EmpfängernonReceive
.quelle
sendStickyBroadcast()
führt einesendBroadcast(Intent)
so genannte Sticky-Funktion aus, dh die Absicht, die Sie senden, bleibt nach Abschluss der Übertragung bestehen, sodass andere Benutzer diese Daten schnell über den Rückgabewert von abrufen könnenregisterReceiver(BroadcastReceiver, IntentFilter)
. In allen anderen Fällen verhält sich dies genauso wiesendBroadcast(Intent)
. Ein Beispiel für eine Sticky-Sendung, die über das Betriebssystem gesendet wird, istACTION_BATTERY_CHANGED
. Wenn SieregisterReceiver()
diese Aktion aufrufen - auch mit einer NullBroadcastReceiver
- erhalten Sie die Absicht, die zuletzt für diese Aktion gesendet wurde. Daher können Sie dies verwenden, um den Zustand der Batterie zu ermitteln, ohne sich unbedingt für alle zukünftigen Zustandsänderungen in der Batterie registrieren zu müssen.quelle
Der Wert einer Sticky-Sendung ist der Wert, der zuletzt gesendet wurde und derzeit im Sticky-Cache gespeichert ist. Dies ist nicht der Wert einer Sendung, die gerade empfangen wurde. Ich nehme an, Sie können sagen, es ist wie ein Browser-Cookie, auf das Sie jederzeit zugreifen können. Die Sticky-Sendung ist jetzt gemäß den Dokumenten für Sticky-Broadcast-Methoden ( z. B. ) veraltet :
quelle
Eine normale Broadcast-Absicht ist nicht mehr verfügbar, nachdem sie vom System gesendet und verarbeitet wurde. Wenn Sie die sendStickyBroadcast (Intent) -Methode verwenden, bleibt die Absicht erhalten, was bedeutet, dass die von Ihnen gesendete Absicht nach Abschluss der Übertragung erhalten bleibt.
Sie verweisen auf meinen Blog: Geben Sie hier die Linkbeschreibung ein
quelle