Quando fai scorrere un'app dall'elenco delle app attualmente in esecuzione su Android, cosa succede esattamente all'applicazione e ai dati? Continua a leggere mentre indaghiamo.
La sessione di domande e risposte di oggi ci arriva per gentile concessione di Android Enthusiast, una suddivisione di Stack Exchange, un raggruppamento guidato dalla comunità di siti web di domande e risposte.
La domanda
Il lettore Android Enthusiast Eldarerathis è curioso della funzionalità di scorrimento delle app che ti consente di visualizzare l'elenco delle app in esecuzione tramite il pulsante Home e quindi di farle scorrere verso destra, presumibilmente per chiuderle:
Il recente elenco di app in Ice Cream Sandwich ha aggiunto la possibilità di far scorrere le app fuori dall'elenco, chiudendole così in modo permanente (e per quanto ne so questa è una funzione vaniglia, non una CM / ROM personalizzata). La documentazione e i punti salienti della piattaforma non sembrano coprire il funzionamento sotto il cofano di questa funzionalità, ma sono curioso di sapere cosa sta effettivamente facendo il sistema.
Inoltre, aumentando la mia curiosità, ho deciso di fare un rapido test: ho avviato Music su un'installazione CM9, quindi sono uscito. Ho quindi controllato l'elenco delle app recenti e ho visto che era effettivamente lì (e nello stato corretto, in base alla miniatura). Poi sono entrato
Impostazioni-> Applicazionie la forza ha interrotto l'app Music, ma era ancora elencata nell'elenco recente, il che mi ha portato a credere che non fosse collegata a processi in background.Rendendomi conto ora che la musica potrebbe essere stata una scelta sbagliata, ho anche provato con l'app USA Today. Questo mostrava fondamentalmente lo stesso comportamento e sembrava che fosse stato costretto a "riavviare" dopo l'arresto forzato (il che ha senso) sebbene la miniatura nell'elenco delle app recenti non lo riflettesse (memorizzato nella cache, immagino?).
Quindi, cosa succede effettivamente a livello di sistema operativo quando scorri un'app dall'elenco recente? Cancella semplicemente i dati dell'app dalla RAM e li raccoglie nell'immondizia, distruggendo il suo stato salvato?
Cosa succede esattamente quando fai scorrere l'app fuori dall'elenco?
Le risposte
Il collaboratore di Android Enthusiast Austin Mills offre alcune informazioni:
Strisciare le app dall'elenco delle app recenti è vanigliato e sì, non ben documentato. Questo è stato l'argomento di una discreta quantità di discussioni su vari forum Android ... il consenso sembra essere meglio descritto qui in alcuni commenti : che il comportamento è simile ma non esattamente uguale alla chiusura di un'app - in generale (per le app che non definiscono la gestione esplicita del pulsante Indietro) è la stessa cosa che rispondere abbastanza volte dall'interno di un'applicazione da cui esci esso.
Il collegamento ha alcuni dettagli in più sulle specifiche, ma nel complesso puoi pensarlo come una chiusura dell'applicazione.
Specifico per l'app Music, credo che avvii un servizio, quindi mentre l'attività stessa (l'app Music / UI) potrebbe essere chiusa, il servizio continua a essere eseguito in background in modo che la tua musica non si interrompa improvvisamente solo perché l'attività è stato cancellato per motivi di gestione della memoria. Potrebbe aver influito su ciò che hai visto.
Quindi, partecipando al cerchio di domande e risposte della vita, Eldarerathis è tornato con alcune sue ricerche per completare la risposta:
Mi sembra di aver trovato i termini di ricerca magici che hanno portato ad alcune spiegazioni da parte dei dipendenti di Google. Nello specifico, ho trovato un paio di luoghi diversi in cui Dianne Hackborn spiega cosa succede quando si fa scorrere qualcosa dall'elenco recente. Il primo è un commento su uno dei suoi post Google+ :
[W] ciò che accade specificamente quando si fa scorrere un dito su un'attività recente è: (1) elimina qualsiasi processo in background o vuoto dell'applicazione (vedere Qui per quello che significa), e (2) usa il nuovo API per comunicare a tutti i servizi dell'applicazione l'attività rimossa in modo che possa fare tutto ciò che ritiene appropriato.
Anche lei note in un commento sul blog :
In realtà, la rimozione di una voce nelle attività recenti ucciderà tutti i processi in background esistenti per il processo. Non causa direttamente l'arresto dei servizi, tuttavia è disponibile un'API che consente loro di scoprire che l'attività è stata rimossa per decidere se vogliono che questo significhi che dovrebbero interrompersi. In questo modo, la rimozione di un compito recente di un'app di posta elettronica non interromperà il controllo della posta.
Se vuoi davvero interrompere completamente un'app, puoi premere a lungo sulle attività recenti per andare alle informazioni sull'app e premere forza per fermare lì. L'arresto forzato è un kill completo dell'app: tutti i processi vengono interrotti, tutti i servizi vengono interrotti, tutte le notifiche rimosse, tutti gli allarmi rimossi, ecc. L'app non può essere riavviata fino a quando non viene esplicitamente richiesto.
Quindi, sembra che il riepilogo sia che scorrere un'app fuori dall'elenco prima ucciderà tutti i processi in background per l'app, quindi utilizzerà
onTaskRemovedper notificare all'app che l'attività in background è stata rimossa. A quel punto sembra che spetti all'app decidere cosa succede, quindi immagino che tecnicamente ci sia non lo è una regola rigida su ciò che accade all'app oltre quel punto.