9Aug

Che cosa accade esattamente quando si fa scorrere un'app Android dall'elenco delle app recenti?

Quando si fa scorrere un'app dall'elenco delle app attualmente in esecuzione su Android, cosa accade esattamente all'applicazione e ai dati? Continua a leggere mentre indaghiamo.

Today's Question &La sessione di risposta ci viene fornita per gentile concessione di Android Enthusiast, una suddivisione di Stack Exchange, un raggruppamento di Q & A basato su community.

Il lettore

Android Enthusiast Eldarerathis è curioso della funzionalità di app-swipe che ti permette di aprire l'elenco delle app in esecuzione tramite il pulsante Home e poi scorrere verso destra, presumibilmente per chiuderle:

L'elenco delle app recenti inIce Cream Sandwich ha aggiunto la possibilità di far scorrere le app fuori dalla lista, eliminandole in modo definitivo( e per quanto ne so questa è una funzione vaniglia, non una CM / custom ROM).La documentazione e i punti salienti della piattaforma non sembrano coprire il funzionamento di questa funzionalità, ma sono curioso di sapere che cosa sta effettivamente facendo il sistema.

Aggiungendo ulteriormente alla mia curiosità, ho deciso di fare un test rapido: ho avviato Music su un'installazione CM9, quindi ho fatto retromarcia. Ho quindi controllato la lista delle app recenti e ho visto che era effettivamente lì( e nello stato appropriato, basato sulla miniatura).Poi sono entrato in Impostazioni- & gt; Applicazioni e forza hanno interrotto l'app Music, ma era ancora elencata nell'elenco recente, portandomi a credere che non fosse connesso ai processi che persistevano in background.

Rendendosi conto ora che la musica potrebbe essere stata una scelta sbagliata, ho anche provato con l'app USA Today. Questo ha mostrato fondamentalmente lo stesso comportamento, e sembrava essere stato costretto a "rilanciare" dopo l'arresto forzato( il che ha senso) anche se la miniatura nella recente lista di app non rifletteva questo( memorizzato nella cache, sto indovinando?).

Quindi, cosa succede realmente a livello di sistema operativo quando si fa scorrere un'app fuori dall'elenco recente? Rimuove semplicemente i dati della app dalla RAM e li raccoglie, distruggendone lo stato salvato?

Che cosa sta succedendo esattamente quando si fa scorrere l'app fuori dalla lista?

The Answers

Il collaboratore di Enthusiast per Android Austin Mills offre alcune informazioni:

Le applicazioni di swiping della recente lista di app sono vanilla e sì, non ben documentate. 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 lo stesso di chiudere un'app - in generale( per le app chenon definire la gestione esplicita del pulsante back) è la stessa cosa che colpire un numero sufficiente di volte da un'applicazione che si esce da essa.

Il collegamento ha alcuni dettagli in più sulle specifiche, ma nel complesso si può pensare a come uscire dall'applicazione.

Specifico per l'app Music, credo che inizi un servizio, quindi mentre l'attività stessa( l'app / interfaccia musicale) può essere chiusa, il servizio continua a essere eseguito in background in modo che la musica non si interrompa improvvisamente solo perchéil compito è stato risolto per motivi di gestione della memoria. Questo potrebbe aver influito su ciò che hai visto.

Poi, partecipando alla cerchia di domande e risposte, Eldarerathis è tornato con alcune sue ricerche per completare la risposta:

Sembra che abbia trovato i termini di ricerca magici che hanno portato a delle spiegazioni dai dipendenti di Google. Nello specifico, ho trovato un paio di posti diversi in cui Dianne Hackborn spiega cosa succede quando si fa scorrere qualcosa fuori dalla lista recente. Il primo è un commento su uno dei suoi post di Google+:

[W] hat si verifica in modo specifico quando si cancella un compito recente:( 1) uccide qualsiasi background o processo vuoto dell'applicazione( vedere qui per cosa significa),e( 2) utilizza la nuova API per comunicare a qualsiasi servizio dell'applicazione l'attività che viene rimossa, in modo che possa fare tutto ciò che ritiene appropriato.

Nota anche in un commento sul blog:

In realtà, la rimozione di una voce nelle attività recenti può eliminare qualsiasi processo in background esistente per il processo. Non causerà direttamente la cessazione dei servizi, tuttavia è disponibile un'API per scoprire che l'attività è stata rimossa per decidere se vogliono che ciò significhi che devono essere interrotti. In questo modo la rimozione dice che il compito recente di un'app di posta elettronica non causerà il blocco del controllo della posta elettronica.

Se vuoi davvero interrompere completamente un'app, puoi premere a lungo sulle attività recenti per accedere alle informazioni sull'app e premere il pulsante di arresto forzato qui. L'arresto forzato è un'uccisione completa dell'app - tutti i processi vengono uccisi, tutti i servizi interrotti, tutte le notifiche rimosse, tutti gli allarmi rimossi, ecc. L'app non può essere riavviata fino a quando non viene richiesta esplicitamente.

Quindi, sembra che il riepilogo sia che lo swipe di un'app fuori dall'elenco prima uccide tutti i processi in background per l'app, quindi usa onTaskRemoved per notificare all'app che l'attività in background è stata rimossa. A quel punto sembra che spetti all'app decidere cosa succede, quindi suppongo che tecnicamente non sia una regola ferrea su cosa succede all'app oltre quel punto.

Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.