480 Stimmen

Wie verwendet man LocalBroadcastManager?

Verwendung/Standort LocalBroadcastManager wie beschrieben in Google-Dokumente y Dienstsendung doc ?

Ich habe versucht, es zu googeln, aber es gibt keinen Code, mit dem man anfangen könnte?

In den Dokumenten steht, dass ich es verwenden soll, wenn ich die Übertragung intern in den Prozess meiner Anwendung einbinden möchte, aber ich weiß nicht, wo ich danach suchen soll.

Gibt es Hilfe/Kommentar?

更新情報 : Ich weiß, wie man Broadcasts benutzt, aber ich weiß nicht, wie man LocalBroadcastManager in meinem Projekt zur Verfügung.

0 Stimmen

Waqas, haben Sie den Empfänger im Verzeichnis registriert? Wenn ja, lassen Sie mich bitte wissen, wie?

2 Stimmen

Ich glaube nicht, dass Sie einen Empfänger für solche Sendungen im Manifest registrieren müssen, denn wenn Sie das tun, wird dieser Empfänger auch globale Sendungen empfangen.

3 Stimmen

Wahr. Das bedeutet, dass ich den Code wie in der folgenden Antwort beschrieben eingeben muss; LocalBroadcastManager.getInstance(this).registerReceiver(mMe‌​ssageReceiver, new IntentFilter("custom-event-name"));

15voto

Rohit Singh Punkte 14318

So ändern Sie Ihre globale Sendung in LocalBroadcast

1) Instanz erstellen

LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);

2) Zur Registrierung von BroadcastReceiver

Ersetzen Sie

registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

Mit

localBroadcastManager.registerReceiver(new YourReceiver(),new IntentFilter("YourAction"));

3) Für das Senden einer Broadcast-Nachricht

Ersetzen Sie

sendBroadcast(intent);

Mit

localBroadcastManager.sendBroadcast(intent);

4) Für die Aufhebung der Registrierung einer Broadcast-Nachricht

Ersetzen Sie

unregisterReceiver(mybroadcast);

Mit

localBroadcastManager.unregisterReceiver(mybroadcast);

0 Stimmen

Wie kann ich mehrere IntentFilter registrieren?

0 Stimmen

@ParikshitChalke: Link

6voto

Stan Punkte 6341

Wenn Sie genug mit LocalBroadcastReceiver spielen, schlage ich Ihnen vor, dass Sie Der EventBus von Green Robot ausprobieren - Sie werden den Unterschied und die Nützlichkeit im Vergleich zu LBR definitiv erkennen. Weniger Code, anpassbar über den Empfänger-Thread (UI/Bg), Überprüfung der Empfänger-Verfügbarkeit, Sticky-Events, Events können als Datenlieferung verwendet werden etc.

5voto

Shalu T D Punkte 3555

Kotlin-Version der Verwendung LocalBroadcastManager :

Bitte prüfen Sie den folgenden Code für registering , sending y receiving die broadcast Nachricht.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // register broadcast manager
        val localBroadcastManager = LocalBroadcastManager.getInstance(this)
        localBroadcastManager.registerReceiver(receiver, IntentFilter("your_action"))
    }

    // broadcast receiver
    var receiver: BroadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            if (intent != null) {
                val str = intent.getStringExtra("key")

            }
        }
    }

    /**
     * Send broadcast method
     */
    fun sendBroadcast() {
        val intent = Intent("your_action")
        intent.putExtra("key", "Your data")
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
    }

    override fun onDestroy() {
        // Unregister broadcast
        LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
        super.onDestroy()
    }

}

2voto

nindalf Punkte 948

Ein Beispiel für eine Aktivität und einen Dienst, die einen LocalBroadcastManager implementieren, finden Sie in der Entwickler docs . Ich persönlich fand es sehr nützlich.

EDIT: Der Link wurde inzwischen von der Website entfernt, aber die Daten sind die folgenden: https://github.com/carrot-garden/android_maven-Android-plugin-samples/blob/master/support4demos/src/com/example/Android/supportv4/content/LocalServiceBroadcaster.java

0voto

Seroj Grigoryan Punkte 149
enter code here if (createSuccses){
                        val userDataChange=Intent(BRODCAST_USER_DATA_CHANGE)
                        LocalBroadcastManager.getInstance(this).sendBroadcast(
                            userDataChange
                        )
                        enableSpinner(false)
                        finish()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X