Antworten:
Folgendes sagt das Android SDKsendStickyBroadcast()
:
Führen Sie eine sendBroadcast (Absicht) durch, die "klebrig" ist. Dies bedeutet, dass die von Ihnen gesendete Absicht nach Abschluss der Übertragung erhalten bleibt, damit andere diese Daten schnell über den Rückgabewert von registerReceiver (BroadcastReceiver, IntentFilter) abrufen können. In allen anderen Fällen verhält sich dies genauso wie sendBroadcast (Intent).
Ein Beispiel für eine Sticky-Sendung, die über das Betriebssystem gesendet wird, ist ACTION_BATTERY_CHANGED
. Wenn Sie registerReceiver()
diese Aktion aufrufen - auch mit einem null
BroadcastReceiver
-, erhalten Sie die Intent
zuletzt für diese Aktion ausgestrahlte Aktion. 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.
Typen : - Lokal, Normal, Geordnet und Klebrig
Normale Sendung
: - benutze sendBroadcast ()
: - asynchrone Übertragung
: - Jeder Empfänger empfängt eine Sendung ohne bestimmte Reihenfolge
Bestellte Sendung
: - benutze sendOrderedBroadcast ()
: - Synchronübertragung
: - Empfänger empfängt eine Sendung in Prioritätsbasis
: - Wir können die Übertragung in diesem Typ auch einfach abbrechen
Lokale Sendung
: - Nur verwenden, wenn Broadcast nur innerhalb desselben Prozesses verwendet wird
Sticky Broadcast
: - Die normale Broadcast-Absicht ist nicht mehr verfügbar, nachdem diese vom System gesendet und verarbeitet wurde.
: - sendStickyBroadcast verwenden (Absicht)
: - Die entsprechende Absicht ist klebrig, was bedeutet, dass die Absicht, die Sie senden, nach Abschluss der Übertragung bestehen bleibt.
: - Aus diesem Grund können andere diese Daten schnell über den Rückgabewert von registerReceiver (BroadcastReceiver, IntentFilter) abrufen.
: - abgesehen davon wie sendBroadcast (Intent).
sendbroadcast()
- normale Sendung, aber wir können auch Priorität setzen.
sendstickybroadcast()
- Die damit verabschiedete Absicht gilt für zukünftige Benutzer, die sich über Code registrieren (dynamische Empfänger). Die Sendung, die bei Android bleibt und erneut an die zukünftigen Anforderungen von Rundfunkempfängern gesendet oder erneut gesendet wird
Wenn jemand eine Sticky-Sendung mit sendet, sendstickyBroadcast(intent);
ist diese Sendung für zukünftige Benutzer verfügbar, die dynamische Empfänger verwenden.
Aber jetzt sollten Sie keine sendStickyBroadcast()
Methode verwenden, die veraltet ist
Aus der Android-Dokumentation:
Diese Methode wurde in API-Level 21 nicht mehr unterstützt. Sticky-Broadcasts sollten nicht verwendet werden. Sie bieten keine Sicherheit (jeder kann darauf zugreifen), keinen Schutz (jeder kann sie ändern) und viele andere Probleme. Das empfohlene Muster besteht darin, eine nicht klebrige Sendung zu verwenden, um zu melden, dass sich etwas geändert hat, und einen anderen Mechanismus für Apps, um den aktuellen Wert bei Bedarf abzurufen
Ich hoffe das hilft.