Sto sviluppando un'applicazione Android Launcher (sostituzione schermata iniziale) e l'esecuzione nel programma di avvio che viene ucciso in situazioni di memoria insufficiente. Questo ovviamente non è eccezionale quando l'utente torna a casa e deve aspettare.Priorità di regolazione OOM (Memoria esaurita) delle app Android per i processi
Nella mia ricerca, ho trovato che Android classifica i processi in diversi gruppi di priorità, dal più alto al più basso:
sistema
persistente
Primo piano
Visibile
Perceptible
Una Servizi
casa
Precedente
B Servizi
Sfondo
È possibile esaminare quali processi caduta sotto il quale eseguendo: dumpsys adb shell MemInfo
Il più completo la documentazione che ho trovato su questo argomento era: http://developer.android.com/guide/components/processes-and-threads.html#Lifecycle
Tuttavia, non fornisce un'immagine chiara di tutti i gruppi menzionati sopra. In particolare,
Come/quando un processo è considerato "percettibile"? Alcune app (come lo Go Launcher EX) sembrano aver capito come rimanere in questa categoria quando non sono in primo piano. In questo modo, non viene ucciso più spesso. Come stanno facendo?
Trovo dall'attività dbbsh della shell adb che Go Launcher Ex è considerato un servizio in primo piano. L'unica documentazione che posso trovare su questo argomento dice che è necessario inserire una notifica persistente nella barra di stato. Tuttavia, Go Launcher Ex ha in qualche modo aggirato questo requisito. Mi sono perso su come: - (
Qual è la differenza tra "A Servizi", "casa", e "B Servizi"
Qualsiasi altro consiglio generale per un'applicazione di avvio su come? può guadagnare priorità maggiore rispetto un'applicazione regolare? Penso che questa sia una richiesta del tutto legittima, dato che un lanciatore dovrebbe essere considerata una priorità maggiore rispetto maggior parte delle cose (tranne l'attività corrente in primo piano) per gli utenti.
Bella domanda! Aggiungi 1 per dumpsys. – herbertD