Wie schafft man eine zwei-Wege-Kommunikation zwischen Activity und Service in verschiedenen Prozess?
Arbeite ich an der Etablierung einer zwei-Wege-Kommunikation zwischen einer Activity und einem Service läuft in einem anderen Prozess.
Abfragen der Prozess von der Aktivität ist keine große Sache. Aber ich will den Prozess zu informieren und den Aktivitäten auf Veranstaltungen. Die Idee dahinter ist diese: der service läuft unabhängig von der eigentlichen app. Es fragt einen webserver in regelmäßigen Abständen. Wenn eine neue Aufgabe gefunden, auf die der webserver-Prozess, er sollte die Aktivität.
Fand ich dieser thread über an AndDev.org aber es scheint nicht zu funktionieren für mich. Ich habe Herumspielen mit BroadcastReceiver. Ich habe implementiert eine Schnittstelle, die er sollte die Aktivität aber das problem ist, dass der Zuhörer ist immer null, da die Sendung aus dem Prozess erfolgt über intents, also die Klasse, die Sie erweitert BroadcastReceiver wird neu instanziert.
Wie kann ich es schaffen eine 2-Wege-Kommunikation? Dies muss möglich sein.
Vielen Dank für jede Hilfe,
steff
- Sie können Details wie "Abfrage der Prozess von der Aktivität ist keine große Sache"> Genau, wie Sie es tun? Sind Sie gebunden an den Dienst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entweder
BroadcastReceiver
oder haben dieAktivität
registrieren Sie eine callback-oder listener-Objekt, dass dieService
fordert die wichtigsten Ereignisse. Die links oben sind zu buchen Beispiel Projekte demonstrieren jede dieser Techniken.BroadcastReceiver
ist ein Klasse-eine Klasse kann sowohl eineActivity
und einBroadcastReceiver
. Sie können verwenden eine innere Klasse von IhremActivity
für dieBroadcastReceiver
, wie gezeigt, in der Beispiel-code im Zusammenhang mit oben. Sie können Namen für Komponenten in Ihre SendungIntents
, aber dies erfordert einen öffentlichenBroadcastReceiver
Klasse. Oder Sie können mithilfe von benutzerdefinierten action strings, die, wie gezeigt, in der Beispiel-code im Zusammenhang mit oben.AlarmManager
, hoffe ich. "Wenn er findet eine neue Aufgabe, die er anzeigen soll, eine Benachrichtigung in der Statusleiste und benachrichtigt die GUI, wenn das GUI läuft) mit (einen Verweis auf) die neue Aufgabe." Sie können tun, dass mit einerIntentService
,AlarmManager
,Notification
, und eine broadcast -Intent
(von denen die letztere sollte abgeholt werden von derActivity
wenn es ausgeführt wird).Ich denke, du solltest die
BroadcastReceiver
starten Sie Ihren Aktivitäten wieder mit dem Ergebnis in der Absicht.Oder verwenden Sie AIDL über AIDL. Die Proben haben auch eine (mehrere?) Beispiel für die Verwendung von AIDL und Dienstleistungen. Aber
AIDL
vielleicht zu viel von einem Streit für Ihre Zwecke.Verwenden Sie
BroadcastReceiver
zu erhalten Absichten, und wenn Sie kommunizieren wollen, machen Sie einfach eine Absicht, die durch die entsprechenden Werte.Diese Weise sollten Sie in der Lage, eine 2-Wege-Kommunikation zwischen einer Komponente.