Revision 2: Übergeben von Daten aus einem Hintergrunddienst / -thread an eine andere Aktivität als die MainActivity, die den Hintergrunddienst erstellt hat

8

Ich habe eine einfache Android-Anwendung erstellt, um zu testen, wie Sie mit einem Handler oder Handlern Daten von einem Hintergrunddienst / -thread an andere Aktivitäten als die MainActivity, die den Hintergrunddienst erstellt hat, übergeben. Ich habe den Service, den Thread und einen Handler, die in der MainActivity arbeiten. Der letzte Schritt besteht darin, einen Handler dazu zu bringen, Daten an andere Aktivitäten als die MainActivity zu übergeben. Ich kann den Dienst dazu bringen, Nachrichten an den MainActivity-Handler weiterzuleiten, aber ich weiß nicht, wie ich ihn dazu bringen kann, Daten an andere Aktivitäten weiterzuleiten.

Warum sollte jemand das machen wollen? Ich dachte das im Vergleich zu einem einfachen MP3-Player, aber was es eigentlich vergleicht, ist ein schönes FM-Radio. Die MainActivity verwendet einen Hintergrunddienst, mit dem ich einen UKW-Sender auswählen kann. Wenn ich die Play-Aktivität starte, sollte es an den gleichen Hintergrunddienst gebunden sein, damit ich weiter hören kann, während es (der nette Teil) einen grafischen Equalizer oder eine Animation des Audios anzeigt. Im Grunde kann ich nicht aus mehr als einer Aktivität an den Hintergrunddienst binden.

Mein Code basierte ursprünglich auf einem Service-Beispiel Seite 304 in Pro Android 2 und wurde enorm von einem CommonsWare Beispielanwendung .

Bitte sehen Sie sich meinen aktuellen Code an. Es besteht aus drei sorgfältig kommentierten Dateien, die beschreiben, was ich versuche, und die Schwierigkeiten, die ich habe, neben der MainActivity Daten an eine andere Aktivität weiterzuleiten:

%Vor%

Jede Hilfe, die einen Hintergrund-Service, -Thread und -Handler verwendet, um Daten an eine andere Aktivität zusätzlich zu der MainActivity weiterzuleiten, die den backgraound-Service erstellt hat, wäre sehr willkommen.

    
Marie 15.06.2011, 02:10
quelle

1 Antwort

8

Der Handler ist einem bestimmten Thread zugeordnet. Solange Sie ihn im UI-Thread erstellen, müssen Sie lediglich den Handler freigeben. Ich würde Ihren Handler in meine Klasse Application setzen. Und Sie können das ganze Messenger dort hinstellen, wenn Sie wollen. Dann können Sie in jeder Aktivität über ((MyApplication)getApplication()).getHandler() auf den Handler zugreifen. Wenn die Aktivität gestartet oder angehalten wird, können Sie sie als Rückruf registrieren.

So etwas wie das

%Vor%

In jeder Aktivität, die Empfangsbestätigungen über Messenger durchführen muss

%Vor%

}

Das ist nur eine Idee. Sie müssen es möglicherweise auf Ihre Bedürfnisse abstimmen.

Und vergiss nicht, MyApplication name in AndroidManifest.xml zu setzen

    
Alex Gitelman 18.06.2011, 01:37
quelle

Tags und Links