Activity UI-Komponente von Broadcast Receiver aktualisieren?

7

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?

    
Tarun Varshney 24.07.2014, 10:56
quelle

6 Antworten

4

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.

    
Damian Petla 02.08.2014, 08:54
quelle
6

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.

    
Ritesh Gune 28.07.2014 05:24
quelle
4

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: Ссылка

    
natuan241 03.08.2014 11:55
quelle
3

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

    
user3279053 30.07.2014 10:12
quelle
2

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() .

%Vor%     
Manish Mulimani 28.07.2014 06:42
quelle
0

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 lernen     
rupesh jain 28.07.2014 22:27
quelle

Tags und Links