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
Antwort
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.
- 1. Android Broadcast Receiver Nicht triggern
- 2. Broadcast Receiver und ResultReceiver in android
- 3. Android Broadcast Receiver Bluetooth Ereignisse fangen
- 4. Android - Broadcast Receiver protokolliert keine Nachrichten
- 5. Android Bluetooth Broadcast Receiver hat nicht funktioniert
- 6. Android Broadcast Receiver wird nicht trigerred
- 7. Wann startet der Broadcast Receiver?
- 8. Boot/Broadcast Receiver Neustart Probleme
- 9. Schließen Top Aktivität von Broadcast-Receiver
- 10. Welche Art von Broadcast Receiver zu verwenden?
- 11. wifi broadcast receiver mehrere intents
- 12. Boot abgeschlossen Broadcast Receiver Kontextparameter
- 13. Broadcast-Receiver in einem IntentService
- 14. Aktualisiere Activity UI-Komponente von Broadcast Receiver?
- 15. Android 5.0.2 - SMS Broadcast Receiver - kann es nicht funktionieren
- 16. Warum Broadcast Receiver nicht für Service-Anwendung Android arbeiten?
- 17. Broadcast Receiver zum Einfügen in Kontakte
- 18. Wie deklariert man Broadcast Receiver für viele Aktivitäten? Android
- 19. Broadcast Receiver erhält nach einiger Zeit nichts
- 20. Broadcast Receiver in Service nicht erhalten Intent
- 21. So testen Sie BOOT_COMPLETED Broadcast Receiver
- 22. android - Nachricht von Broadcast an Aktivität übergeben
- 23. Android: Wie bekomme ich den Batteriestatus ohne Broadcast Receiver für API Level 17 und höher?
- 24. Android: Wie ein Alarm Manager und Broadcast Receiver eine Netzwerkaufgabe ausführen, die jeden Tag ausgeführt wird
- 25. Broadcast Receiver funktioniert nicht beim ersten App-Start
- 26. Wie Debuggen BOOT_COMPLETE Broadcast Receiver "Force Close" Abstürze?
- 27. Android Update Widget von Broadcast Empfänger
- 28. Android Intent action.MEDIA_SCANNER_FINISHED broadcast
- 29. Prüfen der Internetverbindung mit Broadcast-Receiver funktionieren nicht
- 30. Broadcast Receiver, der nach der zuletzt installierten App lauscht
Können Sie bitte neu formulieren die Frage, ist es sehr schwer –
posten Sie Ihren Code zu verstehen, bitte – Vyacheslav
@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. –