2012-02-24 17 views
30

Sto sviluppando un'applicazione in cui avvio un servizio se una determinata funzione (nella mia app) è abilitata dall'utente. Voglio continuare a eseguire questo servizio anche dopo che l'utente ha lasciato la mia app. Come posso fare questo? plz helpCome mantenere un servizio in esecuzione in background anche dopo che l'utente ha chiuso l'app?

+1

Non disattivare il servizio quando l'utente chiude l'app? Esecuzione in background senza un'attività in primo piano è un po 'come sono destinati ai servizi. Puoi chiarire qual è il tuo problema esattamente? – DeeV

risposta

20

destro da developer.android.com

Un servizio è un componente che viene eseguito in background per eseguire operazioni di lunga durata o per svolgere un lavoro per i processi remoti. Un servizio non fornisce un'interfaccia utente. Ad esempio, un servizio potrebbe riprodurre musica in sottofondo mentre l'utente si trova in un'altra applicazione oppure potrebbe recuperare i dati sulla rete senza bloccare l'interazione dell'utente con un'attività . Un altro componente, ad esempio un'attività , può avviare il servizio e lasciarlo eseguire o associarlo nell'ordine per interagire con esso. Un servizio è implementato come sottoclasse di Service e puoi saperne di più nella Guida per gli sviluppatori di Servizi.

Quindi, finché si crea un servizio e l'utente esce dall'app, verrà comunque eseguito. Proprio come nell'esempio sopra.

Questo dovrebbe dare tutte le informazioni necessarie: https://developer.android.com/guide/components/services.html

+7

Ciò non manterrà il servizio in corso se un Task Manager, che è abbastanza comune sui telefoni ora, uccide il servizio. OnStartCommand (...) nel servizio deve restituire START_STICKY – user1406716

+1

Sì, START_STICKY ricrea il servizio se viene ucciso. – EGHDK

+0

@EGHDK Come viene implementato? – Sauron

6

è possibile usare il responsabile di allarme per qualsiasi servizio in background.

Per tempi particolari si desidera eseguire qualcosa che può essere utile.

E per il processo continuo, è possibile avviare il servizio da Gestione allarmi.

4

Uno dei Android suggerito modo:

Un servizio avviato può utilizzare la startForeground(int, Notification). API per mettere il servizio in uno stato in primo piano, in cui il sistema lo considera come qualcosa di cui l'utente è attivamente a conoscenza e quindi non un candidato per uccidere quando ha poca memoria. (E 'ancora teoricamente possibile per il servizio per essere ucciso sotto pressione della memoria estrema dall'applicazione di primo piano, ma in pratica questo non dovrebbe essere un problema.)

altro modo è riavviare il servizio quando la sua arrestato (Il sistema chiamerà onDestroy() sul servizio interrotto)

Problemi correlati