2012-08-06 10 views
10

Kann überprüft werden, ob eine Sendung im Sticky-Modus gesendet wurde?Kann überprüft werden, ob eine Sendung im Sticky-Modus gesendet wurde? Kann es abgebrochen werden?

Können wir eine Übertragungsnachricht vollständig abbrechen/entfernen? Wenn ja, kann dies sowohl für normale als auch für georderte Sendungen geschehen?

+2

Sticky-Sendungen können entfernt werden; siehe ... http://stackoverflow.com/questions/11839043/android-how-can-i-completely-abort-remove-sticky-broadcast –

Antwort

20

In onReceive() können Sie die folgenden Aufrufe verwenden:

isInitialStickyBroadcast() - Dies wird Ihnen sagen, wenn die Sendung, die Sie sind zur Zeit als „sticky“ geschickt wurde, Verarbeitung und war der aktuelle, wenn der BroadcastReceiver registriert wurde.

isOrderedBroadcast() - Hier erfahren Sie, ob die Sendung, die Sie gerade bearbeiten, als "bestellte" Sendung gesendet wurde.

Wenn Sie wollen einfach nur sehen, ob es eine „sticky“ Sendung ist, können Sie

registerReceiver (BroadcastReceiver receiver, IntentFilter filter) 

nennen und null als receiver Parameter liefern. Dies wird eine "klebrige" Sendung zurückgeben, ohne den Empfänger tatsächlich zu registrieren.

Sie können eine Dauerhaften Broadcast entfernen Verwendung:

removeStickyBroadcast(Intent intent) 

IMHO jedoch, die kontraproduktiv wäre. Normalerweise werden "sticky" Broadcasts gesendet, um den aktuellen Zustand von etwas anzuzeigen. Würde man sie entfernen, würde dies bedeuten, dass eine Anwendung den aktuellen Zustand nicht ermitteln kann.

Verwandte Themen