-2

Ich möchte jetzt wissen, ich verwende Broadcast-Empfänger mit Absicht Service in meiner Anwendung.Es funktioniert jetzt gut. 1) Ich möchte keine Daten vom Broadcast-Empfänger übertragen. Ich möchte Daten getrennt übertragen. gibt es einen Ratschlag für mich, Rundfunkempfänger in Android zu verbessern.Android Broadcast Receiver und Trennen von Daten

+3

Können Sie bitte neu formulieren die Frage, ist es sehr schwer –

+0

posten Sie Ihren Code zu verstehen, bitte – Vyacheslav

+0

@TimCastelijns In meinem Code, 1) MainActivity Anruf IntentService, die die Daten aus der Datenbank erhalten und übertragen diese Daten an Aktivität. Und dann Broadcast-Empfänger in MainActivity empfangen diese Daten und zeigen diese Daten an. –

Antwort

0

Sie sagen, Sie wollen weg von der Verwendung von BroadcastReceiver, um den Rückruf zu bekommen, aber Sie sagen nicht, warum. Hier sind einige mögliche Alternativen:

Sie können LocalBroadcastManager verwenden (wenn Sie nicht bereits sind). Dadurch wird sichergestellt, dass Ihre Daten nicht aus Ihrer App gesendet werden (Sicherheits- und Overhead-Probleme). Dies ist auch etwas leichter (bessere Leistung) als mit einem normalen sendBroadcast() Aufruf.

Sie können von einem IntentService zu einem gebundenen Service wechseln. Sie können einen synchronen Anruf mit AIDL von Ihrem Activity zu Ihrem Service definieren. Ihre Activity wird dann an die Service binden und eine Methode auf die Service aufrufen, die die Daten als Ergebnis des Methodenaufrufs zurückgibt. Keine Notwendigkeit für BroadcastReceiver in diesem Fall.

Sie können betrügen und verwenden eine public static Variable, die einen Verweis auf Ihre Activity hält (den Verweis auf this in onCreate() Ihrer Activity). Wenn die Service die Daten an die Activity senden will, kann sie einfach den Verweis auf Ihre Activity verwenden und rufen Sie eine Methode auf, um die Daten zurück zu übergeben. Keine Notwendigkeit für BroadcastReceiver in diesem Fall. Das ist ein HACK. Wenn Sie dies verwenden, stellen Sie sicher, dass Sie die public static Variable überprüfen, um sicherzustellen, dass es nicht null ist, bevor Sie es verwenden. Dies führt auch zu einem Speicherverlust, da der Garbage Collector die Instanz von Activity nicht zurückfordern kann, wenn Ihr Activity fertig ist, aber das ist wahrscheinlich keine große Sache, da Android schließlich den OS-Prozess, der Ihre Anwendung hostet, beenden wird. Ich würde mir keine Sorgen machen.

Verwandte Themen