2010-07-26 17 views

Antwort

5

Durch das bloße Erweitern einer Serviceklasse kann Ihr Dienst seine Methoden nicht externen Entitäten zugänglich machen. Wenn Sie möchten, dass Ihr Dienst durch einen Code, der nicht in Ihrer Android-App läuft, verfügbar gemacht wird, müssen Sie eine AIDL dafür definieren. Diese AIDL wird geteilt und als Vertrag für Ihren Service gebildet. Siehe hierzu http://developer.android.com/guide/components/aidl.html.

+3

Aber angenommen, nur die App die Nutzung des Dienstes macht, gibt es keinen Grund AIDL zu verwenden - ist das richtig? – MalcomTucker

+1

Korrigieren. Aber warum möchten Sie dann auch einen Service erstellen? –

+1

Ich habe einen lokalen Dienst in meiner App erstellt, um einen größeren Download zu machen. Auf diese Weise hätte ich mehr Kontrolle und Sicherheit als nur eine Async-Aufgabe, die jedes Mal getötet werden kann. Nach meinem Verständnis ist ein Service, der an eine Aktivität gebunden ist, nicht so wahrscheinlich, wenn Ressourcen knapp sind. – Janusz

6

Sie müssen AIDL verwenden, wenn Sie möchten, dass eine Klasse außerhalb des Anwendungsvorgangs auf den Service zugreift. Wenn Sie den Service nur in Ihrer Anwendung verwenden, können Sie eine local service verwenden.

0

1.wenn Sie aidl-basierten Dienst verwenden.

ein paar Vorteile können durch das Segment Teil des Codes in Backend-Service gewonnen werden:

  • entkoppeln Front-End- und Back-End-
  • Speicher/CPU-intensive Verarbeitung zu Backend-Service gestapelt werden können, GC in Dienst nicht Front-End-User Experience
  • Service Absturz beeinflussen bringen nicht die ganze APP

2.how einen solchen Dienst erstellen

ich eine gute Bibliothek geschrieben haben, können Sie als Beispiel siehe http://github.com/zhchang/hogwarts

0

AIDL

Die Definition Android Interface Language (AIDL) eine Programmierschnittstelle zu definieren, ermöglicht es Entwicklern, dass der Client und Server verwenden zu kommunizieren miteinander über Inter-Process Communication (IPC).

Dieser Artikel zeigt, wie Sie eine Verbindung zu einem aktiven Dienst in Android herstellen und wie Sie die Daten vom Remote/Running-Dienst abrufen können.

Beispiel für IPC-Mechanismus

Let Remoteservice einen Client-Dienst und RemoteServiceClient sein, eine Tätigkeit sein mit dem Remote-Dienst zu kommunizieren.

Ein Dienst bietet Informationen über die mathematischen Operationen wie Addition, Subtraktion und Multiplikation für die angegebenen zwei Ganzzahlen. Um die Funktionalität des Dienstes zur Verfügung zu stellen, erstellen Sie eine .aidl-Datei im Projektverzeichnis.

AIDL Example

Verwandte Themen