2010-09-26 9 views
7

Ich habe das Internet durchforstet, ich kann nicht scheinen, herauszufinden, wie man einen Android-Dienst eigentlich tun alles tun. Ich habe viele Beispiele dafür gefunden, wie man einen einfachen erstellt, aber keines der Beispiele scheint zu zeigen, wie man den Dienst von einer Aktivität aus anruft und den Dienst etwas tun lässt.Android Service - Kann kein Beispiel zu finden

Zum Beispiel möchte ich einen Dienst ausführen, der eine TCP-Textnachricht an einen Server sendet, wenn angefordert. Ich kann den Dienst erstellen und ausführen lassen, aber wie zum Teufel mache ich die Aktivität den Aufruf, der eine Zeichenfolge an die Methode in dem Dienst übergibt, die die TCP-Nachricht sendet?

Das scheint, als sollte es etwas einfach sein, aber ich kann einfach nicht herausfinden, oder ein Beispiel dafür finden, wie es geht. Vielleicht verstehe ich nicht, wofür ein Service verwendet werden sollte? Ich will definitiv, dass es für eine lange Zeit läuft, keine gui benötigt, und "Service" -Anforderungen, TCP-Nachrichten zu senden .... hum ...

+0

Nur als ein Punkt der Klarstellung (das ist etwas, was ich brauchte, um zu verstehen), ist das Konzept von "Service" auf dem Android nicht wie Windows-Dienst, der im Hintergrund ohne Kopf läuft. Es ist mehr wie ein Hintergrund-Worker-Thread, Sie erstellen es und sagen ihm, dass es seine Arbeit machen soll, dann kann es ein Ereignis auslösen, wenn es fertig ist. –

Antwort

1

Ich kann den Service machen, und es laufen lassen, aber wie zum Teufel habe ich die Aktivität machen den Anruf, der eine Zeichenfolge an die Methode in dem Dienst, der die TCP-Nachricht senden wird?

Verwenden Sie das lokale Bindungsmuster. In this sample project bindet eine Aktivität an einen Dienst, um basierend auf einer Standortänderung einige Daten von diesem Dienst (Wettervorhersage) abzurufen. In this sample project bindet eine Aktivität an einen Dienst, um ein Listener-Objekt zu registrieren, das über Änderungen in der identi.ca-Zeitleiste eines Benutzers benachrichtigt wird.

Oder verwenden Sie einen IntentService und startService(), um einen Befehl zu senden, der von IntentService verarbeitet werden soll. In this sample project implementiere ich einen IntentService, der ein BeanShell-Skript ausführt, das von einem Aufrufer bereitgestellt wird. In this sample project implementiere ich eine Aktivität, die das BeanShell-Skript an die IntentService sendet. Dieses Beispiel soll demonstrieren, dass diese Technik für verschiedene Anwendungen verwendet wird, aber der Ansatz funktioniert auch innerhalb einer einzigen Anwendung.

ich möchte es für eine lange Zeit

No you don't läuft.

+1

Wenn Sie gerade lernen, ich würde bei der Intent-API bleiben und das Bindungsmuster in Ruhe lassen, ist es viel schwieriger zu verstehen und lässt Sie ständig überprüfen, ob Ihr Verweis auf Ihren Dienst null ist. IntentService ist ein guter Startpunkt http://developer.android.com/reference/android/app/IntentService.html – schwiz