2012-09-21 10 views
6

Der ursprüngliche Bind/Unbind-Service kann vom Client mit bindService()/unbindService() aufgerufen werden.Android Service Fragen zu binden/lösen?

Meine Frage ist, wie Service in Service-Seite zu lösen, nicht unbindService() von Client genannt, wahrscheinlich sollte ich es unbindClient nennen.

Ich denke, der Dienst sollte wissen, welche Clients daran gebunden sind. Gibt es also eine Möglichkeit, dem Dienst zu sagen, dass er einen bestimmten Client lösen soll?

Weil ich schreibe nur den Service, und ich do't wissen, ob der Client unbindService() korrekt aufgerufen, so habe ich diese Frage ..

+1

Es könnte etwas sein, was Sie tun können, um Ihre Klassen neu zu strukturieren. Warum müssen Sie wissen, welcher Client vom Dienst getrennt wurde? –

+0

wie normale c/s Programm, ich möchte einige zugrunde liegende Recycling-Arbeit tun, wenn ein Client getrennt, haben Sie eine bessere Idee? – kwf2030

+0

Können Sie es stattdessen von der 'Aktivität' anrufen, die vom' Service' getrennt wurde? Es gibt eine 'onDestroy()' Methode für Aktivitäten oder 'onPause()' oder 'onStop()'. Sie können es vielleicht dort hinstellen. –

Antwort

0

Wenn Sie Zugriff auf Client-Code haben -

Sie können auch anrufen startService() von dem Client - die den Dienst starten wird (und nicht die Service beim Beenden der Activity beenden - seit nur stopService() wird es schließen).

Und auch, könnte Client bindService() aufrufen - wenn sie Activity - Service Interaktion durchführen möchten.

Beim Beenden/Lösen des Clients wird der Dienst noch ausgeführt, da startService() aufgerufen wurde - Service kann andere Operationen ausführen und dann stopService() anrufen, die sich selbst zerstören wird.

-1

Ein Dienst kann sich nicht selbst lösen. Sie können einen gestarteten Service stoppen selbst mit stopSelf() obwohl.

Das Betriebssystem behält den Überblick über das gesamte Binde- und Bindeverfahren hinter den Kulissen. Sie müssen sich keine Gedanken über das Recycling von Objekten machen, Android erledigt das für Sie.

+0

Wenn Sie denken, die Antwort ist irreführend. Bitte weisen Sie darauf hin, was Ihrer Ansicht nach nicht stimmt. – Wesam

0

Wenn Sie nur die Funktionalität einschränken möchten, die der Dienst zurückgibt, sobald er gestartet wird und bindService() aufgerufen wird. Sie können einen Client registrieren und die Registrierung aufheben, wenn Sie mit dem Dienst fertig sind Jede Auswirkung. Diese wählte ich aus der Remote Messenger Service Beispiel in der Android-Website