Was ist der Unterschied zwischen sendStickyBroadcast
und sendBroadcast
in Android?
quelle
Was ist der Unterschied zwischen sendStickyBroadcast
und sendBroadcast
in Android?
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).
quelle
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 wirdWenn 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 istAus der Android-Dokumentation:
Ich hoffe das hilft.
quelle