2010-05-16 10 views
7

Ich habe eine Aktivität (A) und einen Service (S), die wie folgt von A gestartet wird:In Android: Wie Funktion der Aktivität von einem Dienst aufrufen?

Intent i = new Intent(); 
i.putExtra("updateInterval", 10); 
i.setClassName("com.blah", "com.blah.S"); 
startService(i); 

A haben eine Funktion wie diese in A:

public void someInfoArrived(Info i){...} 

Jetzt möchte ich A.someInfoArived (i) von innerhalb von S. aufrufen. Intent.putExtra hat keine Version, wo ich eine Objektreferenz übergeben könnte etc ... Bitte helfen Sie!

PS: Andersherum (ein Polling S für neue Info) ist NICHT, was ich brauche. Ich habe genug Informationen darüber gefunden, wie das geht.

Antwort

14

Eine Option besteht darin, von startService() zu bindService() zu wechseln und das lokale Bindungsmuster zu verwenden. Dann muss A irgendwann eine Methode auf S aufrufen, um eine Listener- oder Callback-Methode zu registrieren. Dann wird S etwas haben, das es bei A anrufen kann, wenn Informationen eintreffen. Sie können ein Beispielprojekt für das sehen.

Alternativ könnten Sie startService() an Ort und Stelle und verwenden Sie eine Sendung Intent, um S sagen A über einige ankommende Informationen. Sie können ein Beispielprojekt sehen, das eine solche Übertragung zeigt Intenthere.

+1

Danke, das ist genau das, was ich gesucht habe! Meine Hoffnungen und mein Vertrauen in Foren sind wiederhergestellt worden :) – nex

+0

Habe einfach deinen zweiten Vorschlag umgesetzt und es funktioniert wie ein Zauber. Danke noch einmal! – nex

Verwandte Themen