2011-01-16 17 views
13

So che alcuni ritengono che non si debbano creare servizi persistenti.Servizio persistente

Ma per quelli di noi che vogliono aumentare le nostre conoscenze, come si fa a crearne uno in teoria?

Ho giocato in giro e ho notato che i servizi che utilizzano startForeground vengono uccisi in situazioni di scarsa memoria.

Ho visto un permesso, ora deprecato, PERSISTENT_ACTIVITY, ma questo non ha fatto molto.

Quindi qual è il segreto?

risposta

40

È possibile rendere persistente il servizio solo se si sviluppano app di sistema. Questi servizi saranno fondamentalmente non-killable e sono etichettati come "PERS" nell'output del comando "adb shell dumpsys activity". Non è molto ben documentato, quindi ho fatto un rapido resoconto su Persistent services in Android ... speriamo che possa aiutare alcune persone.

Ma per le app non di sistema, startForeground è l'opzione migliore.

+3

Grazie per questo - Sono alla ricerca di una soluzione per giorni - È bello sapere che ci sono alcune persone su StackOverflow che sanno che là fuori ci sono sviluppatori di app di sistema. –

+0

Nota aggiuntiva: il flag persistente funziona perfettamente - il servizio non viene MAI ucciso, anche quando il dispositivo è seriamente a corto di risorse. –

+0

C'è un bug in KitKat 4.4.2 che blocca i servizi senza preavviso, se Google continua questo bug dovremmo rendere i nostri Widget delle app impostate su Persistente – AVEbrahimi

-5

Non è assolutamente possibile impedire al sistema operativo di uccidere il servizio.

+0

vedere, io non sono sicuro al 100% che è corretto, quando faccio "adb shell attività dumpsys" Vedo alcuni servizi etichettati come PERS ... suppongo che è persistente ... come hanno ottenuto che etichetta? – ekawas

+0

Sai persino cosa significa questa etichetta? Android è libero di uccidere qualsiasi cosa in qualsiasi momento. Alcune cose hanno una priorità più alta di altre, ma non puoi impedirlo. Qual è il tuo servizio che cerca di fare ciò che pensi sia così importante da mantenere? – Falmarri

+0

Quindi non sono sicuro di cosa significhi l'etichetta, ecco perché ho scritto che "presumo" che significa persistente. Quindi, cosa fanno i servizi che riproducono musica? Rischiano di essere arrestati casualmente? Assumerei, ancora, che questo è un evento di fondo, giusto? – ekawas