Daremo un'occhiata esattamente a come Android gestisce le app e i processi in esecuzione sul tuo telefono o tablet, demistificando ciò che accade in background.
La gerarchia del ciclo di vita del processo
Un processo su Android può essere in uno dei cinque diversi stati in un dato momento, dal più importante al meno importante:
- 1. Processo in primo piano: L'app che stai utilizzando è considerata il processo in primo piano. Altri processi possono anche essere considerati processi in primo piano, ad esempio se interagiscono con il processo attualmente in primo piano. Ci sono solo alcuni processi in primo piano in un dato momento.
- 2. Processo visibile: Un processo visibile non è in primo piano, ma influenza ancora ciò che vedi sullo schermo. Ad esempio, il processo in primo piano potrebbe essere una finestra di dialogo che ti consente di vedere un'app dietro di essa: l'app visibile sullo sfondo sarebbe un processo visibile.
- 3. Processo di assistenza: Un processo di servizio non è legato a nessuna app visibile sullo schermo. Tuttavia, sta facendo qualcosa in background, come la riproduzione di musica o il download di dati in background. Ad esempio, se inizi a riprodurre musica e passi a un'altra app, la riproduzione musicale in background viene gestita da un processo di servizio.
- 4. Processo in background: I processi in background non sono attualmente visibili all'utente. Non hanno alcun impatto sull'esperienza di utilizzo del telefono. In qualsiasi momento, molti processi in background sono attualmente in esecuzione. Puoi pensare a questi processi in background come app "in pausa". Sono conservati in memoria in modo da poter riprendere rapidamente a utilizzarli quando si torna a loro, ma non utilizzano tempo prezioso della CPU o altre risorse non di memoria.
- 5. Processo vuoto: Una procedura vuota non contiene più dati di app. Può essere tenuto in giro per scopi di memorizzazione nella cache per accelerare l'avvio delle app in seguito, oppure il sistema potrebbe ucciderlo se necessario.
Ad esempio, supponiamo di accendere il telefono e aprire un'app musicale. Mentre lo usi, l'app musicale sarà un processo in primo piano. Quando inizi a riprodurre musica e lasci l'app musicale, la musica continuerà a essere eseguita come processo di servizio.
Android gestisce automaticamente i processi
Android fa un buon lavoro di gestione automatica di questi processi, motivo per cui non è necessario un task killer su Android.
Quando Android ha bisogno di più risorse di sistema, inizierà prima a uccidere i processi meno importanti. Android inizierà a uccidere i processi vuoti e in background per liberare memoria se stai per esaurire. Se hai bisogno di più memoria - ad esempio, se stai giocando a un gioco particolarmente impegnativo su un dispositivo senza molta RAM, Android inizierà quindi a interrompere i processi di servizio, quindi la musica in streaming e i download di file potrebbero interrompersi.
Nella maggior parte dei casi, Android fa tutto questo senza che tu debba preoccuparti di ciò. Android utilizza in modo intelligente la RAM del tuo dispositivo per la memorizzazione nella cache di app e altri dati, perché non ha senso lasciare la RAM vuota.
Ovviamente, Android offre app con così tanta flessibilità che hanno spazio per comportarsi male. Ad esempio, un'app male codificata potrebbe avviare un processo di servizio che rimane sempre in esecuzione in background, consumando tutto il tempo della CPU e riducendo drasticamente la durata della batteria.
Una cosa interessante che noterai nelle app antivirus come Avast! per Android è che l'app antivirus utilizza un'icona di notifica. se si tenta di disattivare l'icona di notifica, Avast! raccomanderà contro di esso. Avendo un'icona di notifica visibile, Avast! si trasforma in un'app di priorità più alta, impedendo ad Android di considerarlo come un'app di sfondo e di ucciderlo.
Le app Android possono iniziare in risposta agli eventi
Le app Android possono anche essere avviate in risposta agli eventi. Ad esempio, uno sviluppatore potrebbe programmare la propria app per l'esecuzione automatica all'avvio ed eseguire un servizio in background. Le app possono iniziare in risposta a una serie di altri eventi, ad esempio quando si scatta una foto, quando la connessione dati cambia e così via. Ciò consente alle app di eseguire azioni in risposta agli eventi senza essere costantemente in esecuzione in background.
Gestione dei processi
Non dovresti aver bisogno di gestire i processi manualmente, ma ci sono alcuni modi per farlo, se vuoi. È possibile utilizzare il menu multitasking su Android 4.0 e versioni successive per eseguire alcune operazioni di gestione dei processi di base.Per accedervi, tocca il pulsante multitasking dedicato sui dispositivi Nexus. Su altri dispositivi Android, potrebbe essere necessario toccare due volte o premere a lungo il pulsante Home.
Le app visualizzate nel menu sono probabilmente in stato "processo in background". Puoi ucciderli scorrendo un'app verso sinistra o verso destra, che la rimuoverà dalla memoria del tuo dispositivo. Questo non dovrebbe essere necessario, ma può aiutarti quando vuoi uccidere rapidamente un'app, forse è un comportamento anomalo.
Android è basato su Linux e ogni app su Android è assegnata a un diverso ID utente Linux - o account utente. Questo isola le app l'una dall'altra. Se esegui il root del dispositivo, le app possono sfuggire ai loro sandbox utente ed eseguire i privilegi di root.