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

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

    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 viene fornita da Android Enthusiast, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.

    La domanda

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

    La recente lista di app in Ice Cream Sandwich ha aggiunto la possibilità di far scorrere le app fuori dalla lista, eliminandole in modo permanente (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 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 l'elenco delle app recenti e ho visto che era effettivamente lì (e nello stato appropriato, basato sulla miniatura). Sono poi andato in Impostazioni-> Applicazioni e forza ha fermato l'app Music, ma era ancora elencata nella lista recente, portandomi a credere che non fosse connessa ai processi persistenti in background.

    Comprendendo ora che la musica può 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 dell'app dalla RAM e li raccoglie, distruggendone lo stato salvato?

    Che cosa sta succedendo esattamente quando fai scorrere l'app dall'elenco?

    Le risposte

    Il contributore appassionato di Android Austin Mills offre alcune informazioni:

    Scorri le app dall'elenco delle app recenti è vanilla, 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 lo stesso di chiudere un'app - in generale (per le app che non definire la gestione esplicita del pulsante back) è la stessa cosa che colpire abbastanza 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 avvii un servizio, quindi mentre il task stesso (l'app Music / UI) potrebbe essere chiuso, il servizio continua ad essere eseguito in background in modo che la musica non si interrompa improvvisamente solo perché l'attività è stato eliminato per motivi di gestione della memoria. Questo potrebbe aver influito su ciò che hai visto.

    Quindi, partecipando al circolo della vita di domande e risposte, Eldarerathis è tornato con una sua ricerca per completare la risposta:

    Sembra che abbia trovato i termini di ricerca magici che hanno portato ad alcune 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 elimina un compito recente: (1) uccide qualsiasi background o processo vuoto dell'applicazione (vedere qui per cosa significa), e (2) utilizza la nuova API per indicare qualsiasi servizio di l'applicazione relativa all'attività da rimuovere 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 uccide 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. Questo è così che la rimozione dice che il compito recente di un'app di posta elettronica non lo farà smettere di controllare la 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 interruzione forzata 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 scorrimento di un'app dall'elenco prima uccide tutti i processi in background per l'app, quindi utilizza onTaskRemoved per notificare all'app che l'attività in background è stata rimossa. A quel punto sembra che dipenda dall'app decidere cosa succede, quindi immagino che ci sia tecnicamente non è 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.