2013-12-09 6 views
6

Ich muss einen Dienst für Android schreiben, mit Delphi XE5 (firemonkey). Dieser Dienst muss im Backgroung laufen und regelmäßig den SMS-Posteingang lesen, indem er ihn in die sqllite DB schreibt (SMS Backup).Android Hintergrund Service in Delphi XE5

Ich weiß, wie man SMS liest und wie man es in DB schreibt, aber ich habe keine Ahnung, wie man App im Hintergrund als Dienst arbeiten lässt.

Irgendwelche Ideen?

S.S .: Vielen Dank für Ihre Antworten. P.P.S .: Sorry für mein schlechtes Englisch.

+1

Sie haben das falsche Werkzeug für den Job ausgewählt. Dies geschieht am besten mit den nativen Entwicklungswerkzeugen. –

Antwort

4

Sie können das nicht mit XE5 allein tun, aber Sie können es mit ein wenig Hilfe von Java tun.

Brian Long hat einen Zweiteiler zu diesem Thema veröffentlicht:

http://blog.blong.com/2013/11/delphi-and-android-services.html

http://blog.blong.com/2013/11/delphi-and-android-services-part-2.html

+0

Es gab auch einen dritten Teil mit einem Update für spätere Versionen - http://blog.blong.com/2015/02/delphi-and-android-services-part-3.html - obwohl natürlich Delphi 10 Seattle jetzt hat native Unterstützung für Android-Dienste. – blong

0

Android services sind nicht das gleiche wie Windows-Dienste. Wenn Sie einen Android-Dienst verwenden, wird er weiterhin im Hauptthread Ihrer Anwendung ausgeführt. Sie stoppen, wenn das Gerät in den Schlafmodus wechselt. Außerdem kann das System den Dienst in wenig Speicher und möglicherweise in anderen Situationen beenden.

Aus der Dokumentation:

Normalerweise wird ein gestarteter Dienst führt einen einzigen Vorgang und nicht Rückkehr ein Ergebnis an den Aufrufer. Zum Beispiel könnte es herunterladen oder eine Datei über das Netzwerk hochladen. Wenn der Vorgang abgeschlossen ist, sollte der Dienst sich selbst stoppen.

und

„, wenn der Dienst gestartet wurde und mit langer Laufzeit, dann wird das System seine Position im Laufe der Zeit in der Liste der Hintergrundaufgaben senken und der Service wird sehr anfällig für Töten "

Anstelle von Diensten könnte der AlarmManager eine bessere Wahl sein. Das ist ein Systemdienst, der Aktionen ausführt, wenn Sie zum Beispiel periodisch berichten.