2017-03-31 10 views
1

Ich habe mehrere Aktivitäten, angenommen, A, B, C, D und alle sind für denselben BroadCastReceiver registriert. Während des Sendens der Broadcast-Nachricht, in welcher Reihenfolge Aktivitäten die Broadcast-Intents empfangen. Ist es in der Reihenfolge wie A, B, C, D oder zufällig.Wie funktioniert ein Broadcast-Empfänger zwischen Aktivitäten?

Bitte lassen Sie mich wissen, geben Sie mir einige Vorschläge.

+0

Ich habe das noch nie gemacht, aber ich habe nur laut nachgedacht ... nur 1 Aktivität ist aktiv, also wird der Aktive zuerst benachrichtigt? –

+1

hast du das doc gelesen? : https://developer.android.com/guide/components/broadcasts.html. speziell für sendOrderedBroadcast gespielt (Intent, String). also würde ich sagen, es kommt darauf an. Ihre Frage gibt nicht die Informationen, die benötigt werden, um sich darüber klar zu sein –

Antwort

1

Sie haben keine Kontrolle darüber, da System diese Aktionen an registrierte Broadcast-Listener sendet. Sie haben keine Garantie auf die Bestellung von Broadcast-Zuhörern.

Es sei denn es ist Broadcast bestellt. Von docs:

Die sendOrderedBroadcast (Intent, String) Methode sendet Sendungen an einen Empfänger zu einem Zeitpunkt. Wenn jeder Empfänger der Reihe nach arbeitet, kann er ein Ergebnis an den nächsten Empfänger weitergeben oder die Übertragung vollständig abbrechen, so dass sie nicht an andere Empfänger weitergegeben wird. Die eingelaufenen Auftragsempfänger können mit dem Attribut android: priority des passenden Intent-Filters gesteuert werden; Empfänger mit derselben Priorität werden in einer beliebigen Reihenfolge ausgeführt.

+0

Oh! Danke, Mann, ich habe meine Zweifel geklärt. Ja, es wird ziemlich zufällig sein. Ich dachte, vielleicht wird Activity Stack die Rolle spielen, welche Aktivität oben ist, die zuerst erhalten wird. – animation123

+1

wie mein Kommentar sagt: es ist nicht klar, bestellt Sendungen sind –

+0

@ HenningLuther, guter Punkt. Ich nahm automatisch gewöhnliche Sendungen an. Wird meine Antwort bearbeiten. Vielen Dank. – azizbekian

1

Es gibt Möglichkeiten, Broadcasts bestellt zu haben. Es hängt davon ab, ob Sie die Sendung übertragen. Wenn Sie senden, verwenden Sie sendOrderedBroadcast(Intent, String) und geben Sie Ihren Empfängern Priorität. Wenn jemand anderer der Sender ist, müssen Sie wissen, ob er bestellt hat oder nicht. Wenn nicht, haben Sie keine Chance, sonst können Sie Ihre Empfänger prioize.

1

Es gibt drei Möglichkeiten, Broadcast in Android zu senden. Nämlich 1. sendBroadcast 2. sendOrderedBroadcast und 3. sendStickyBroadcast. Hier sprechen Sie über sendBroadcast, so dass es einfach die Sendung an registrierte Rundfunkempfänger versenden wird, unabhängig davon, in welcher Reihenfolge die Sendung registriert wurde.

Verwandte Themen