wake-up-neo.com

Android-Anwendung als Dienst ohne Aktivität

Ich mache eine Reihe von Apps und ich habe so ziemlich den gleichen Hintergrunddienst für alle.

Ich versuche, eine App zu erstellen, die nur diese Service enthält. Ich wiederhole es also nicht in allen, aber die Sache ist keine Activity. da keine Benutzeroberfläche dafür erforderlich ist, kann der Benutzer sie nur schließen, wenn er Service beendet.

Ich habe versucht, Activity zu entfernen, aber dann wird die App nicht ausgeführt oder gestartet Meine Frage ist: Kann ich eine App genau wie Google Play Services erstellen, damit andere Apps Service verwenden können.

Wenn ja, dann wäre ein Snippet oder eine Probe sehr willkommen.

24
iLyas

Sicher! Kein Grund, warum Sie keine Anwendung nur mit einem Dienst haben können. ... und Sie müssen nicht in AIDL einsteigen, es sei denn, Sie möchten.

Das Problem ist, wie die Anwendung ausgeführt werden soll. Wenn Sie eine Anwendung mit einer Aktivität erstellen, fügen Sie im Manifest einen Intent-Filter hinzu, mit dem die Aktivität über den Launcher gestartet werden kann. Wenn es keine Aktivität gibt, müssen Sie einen anderen Weg finden, um es zu starten.

Es ist jedoch einfach zu tun. Feuern Sie einfach eine Absicht aus einem Ihrer anderen Programme wie folgt ab:

startService(new Intent("my.service.intent"));

... wo der Dienst registriert ist Ihr Manifest, wie folgt:

        <service Android:name=".SomeService" >
          <intent-filter>
            <action Android:name="my.service.intent"/>
          </intent-filter>

Sie können diese Absicht verwenden, um Parcelable-Parameter an den Dienst zu übergeben, und der Dienst kann antworten, indem er die Absichten zurücksendet.

Natürlich sind startService und broadcastIntent etwas umständlich, wenn Sie wirklich eine komplexe API zwischen Anwendungen und Ihrem Dienst benötigen. Wenn Sie etwas Reichhaltigeres benötigen, möchten Sie sich mit AIDL und einem gebundenen Dienst befassen .

Bearbeitet, um Absichtsfilter hinzuzufügen

28
G. Blake Meike

Ja, ich denke, Sie suchen nach AIDL. Schauen Sie sich diesen Thread an.

https://groups.google.com/forum/#!topic/Android-developers/LuWPZjPZ0sk

0
Mattias Backman