Ich habe sehr grundlegende Fragen. und es könnte sehr einfach sein, aber ich verstehe es nicht. Ich habe eine Aktivität, bei der ich eine UI-Komponente verwende. und ich habe auch einen Rundfunkempfänger (Registrierung aus dem Manifest) wo ich einige UI-Komponente der Aktivitätsklasse aktualisieren muss. Wie -
%Vor%Dafür- Eine Lösung besteht darin, dass die updateLayout () -Methode public static ist und diese Methode in der Empfängerklasse nach Aktivitätsreferenz verwendet wird. Aber ich denke, das ist nicht der richtige Weg. Gibt es einen richtigen Weg, das zu tun?
Wenn Sie BroadcastReceiver
registriert von AndroidManifest.xml
verwenden müssen, können Sie den Event-Bus verwenden. Es gibt eine coole Open-Source-Bibliothek Otto von Square .
Es implementiert Publisher / Subscriber-Muster sehr schön. Sie werden viele Beispiele im Internet finden, wie man es benutzt, es ist sehr einfach. Schauen Sie sich zuerst die Otto's Website
an Wenn Sie den Empfänger direkt von Activity
registrieren / die Registrierung aufheben können, dann würde ich @Ritesh Gune antworten.
Anstatt einen Empfänger in Manifest zu registrieren, können Sie ihn zur Laufzeit wie folgt registrieren und abmelden:
Achten Sie auch darauf, dass Sie Ihren Empfänger mit dem richtigen "Action in Intent Filter" registrieren.
%Vor%Ich hoffe, es hilft.
Ich würde EventBus sicherlich von GreenRobot empfehlen
EventBus ist ein für Android optimierter Publish / Subscribe-Event-Bus. Ein typischer Anwendungsfall für Android-Apps ist das Zusammenkleben von Aktivitäten, Fragmenten und Hintergrundthreads. Die herkömmliche Verdrahtung dieser Elemente führt oft zu komplexen und fehleranfälligen Abhängigkeiten und Problemen im Lebenszyklus. Mit EventBus wird das Verteilen von Listenern durch alle Teilnehmer (z. B. Hintergrunddienst - & gt; -Aktivität - & gt; mehrere Fragmente oder Hilfsklassen) veraltet. EventBus entkoppelt Event-Sender und -Empfänger und vereinfacht damit die Kommunikation zwischen App-Komponenten. Weniger Code, bessere Qualität. Und Sie müssen keine einzige Schnittstelle implementieren!
Besuche: Ссылка
Sie können ObservableEvent mit der Observable-Klasse extends verwenden.
%Vor%Machen Sie das Benachrichtigungszentrum für Singleton-Klassen
%Vor%}
verwenden Sie einfach, um den Beobachter hinzuzufügen, um die Benachrichtigung zu beobachten und um nach der Benachrichtigung die Methode zu verwenden
Von den Dokumenten :
Sie können eine Instanz dieser Klasse entweder dynamisch mit registrieren Context.registerReceiver () oder veröffentlichen Sie eine Implementierung statisch durch das Tag in Ihrer AndroidManifest.xml.
Registrieren Sie einen Empfänger in Activity.onResume()
implementation und entfernen Sie die Registrierung in Activity.onPause()
.
Sie können das Beobachtermuster verwenden - die Aktivität registriert sich selbst in onResume () mit dem Broadcastempfänger, um Aktualisierungen zu erhalten, und in onPause () hebt die Registrierung selbst auf.
Es gibt viel Material im Netz, um Beobachtermuster Ссылка
zu lernenTags und Links java android broadcastreceiver