2013-12-09 7 views
6

Devo scrivere un servizio per Android, utilizzando delphi XE5 (firemonkey). Questo servizio deve essere eseguito in background e leggere periodicamente la posta in arrivo sms, scrivendola in SQL sqllite (backup di sms).Servizio sfondo Android in Delphi XE5

So leggere gli sms e come scriverlo in DB, ma non ho idea di come far funzionare l'app in background come servizio.

Qualche idea?

P.S .: Grazie per le vostre risposte. P.P.S .: Scusa per il mio cattivo inglese.

+1

Hai scelto lo strumento sbagliato per il lavoro. Questo è categoricamente meglio fatto con gli strumenti di sviluppo nativi. –

risposta

4

Non è possibile farlo solo con XE5, ma è possibile farlo con un piccolo aiuto da Java.

Brian lungo ha pubblicato un in due parti su questo argomento:

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

C'era anche una terza parte, contenente un aggiornamento per le versioni successive - http://blog.blong.com/2015/02/delphi-and-android-services-part-3.html - anche se naturalmente Delphi 10 Seattle ora ha il supporto nativo per i servizi Android. – blong

0

Android services non sono le stesse di servizi di Windows. Se si utilizza un servizio Android, viene comunque eseguito nel thread principale dell'applicazione. Si fermano quando il dispositivo entra in modalità di sospensione. Inoltre, il sistema può terminare il servizio in caso di memoria insufficiente ed eventualmente altre situazioni.

Dalla documentazione:

Di solito, un servizio avviato esegue una singola operazione e non restituire un risultato al chiamante. Ad esempio, potrebbe scaricare o caricare un file sulla rete. Al termine dell'operazione, il servizio dovrebbe interrompersi.

e

"se il servizio è stato avviato ed è di lunga durata, allora il sistema abbassare la sua posizione nella lista delle attività in background nel corso del tempo e il servizio diventerà altamente sensibili alle uccisione "

Invece di servizi, AlarmManager potrebbe essere una scelta migliore. Questo è un servizio di sistema, che eseguirà azioni quando lo direte, ad esempio periodicamente.