[INFO] Applicazioni & Processi in background ACCESI o SPENTI ??
Succede sempre più spesso molti utenti vadano nel panico a vedere processi aperti o applicazioni in background, con il terrore che ciò possa dilapidare la batteria o smplicemente diano "fastidio".
Vediamo più da vicino il ciclo di vita delle applicazioni e come si comporta Android, naturalmente allo scopo di rendere più "comprensibile" per i nuovi utenti la cosa sarà descritta a grandi linee, i processi sono molto più complessi ma possiamo dividere le applicazioni in 2 categorie principali
APPLICAZIONI CHE NON HANNO O NON USANO I SERVIZI
APPLICAZIONI CHE USANO I SERVIZI
Che cosa sono questi servizi?
I servizi sono parti di codice che ci permettono di fare molte cose, come ascoltare la musica mentre giochiamo, o caricare un immagine o un filmato mentre noi facciamo altro.
I servizi sono programmati dallo sviluppatore e vengono utilizzati quando è necessario, mentre le applicazioni che ne fanno uso possono avere dei servizi loro stessi, oppure usare un servizio già presente in Android, sta quindi all'utente decidere quali applicazioni avviare e al sistema quali servizi usare e quali no.
Tra le applicazioni che usiamo possiamo fare un ulteriore distinzione:
APPLICAZIONI CHE GIRANO IN FOREGROUND
APPLICAZIONI IN BACKGROUND
SERVIZI
Un applicazione quando viene avviata e usata si può dire che è in "FOREGROUND" ovvero utilizza parte della CPU, memoria RAM, sensori, oppure GPS e tutto quello che serve alla nostra applicazione per funzionare correttamente e per essere usata (interfaccia grafica, 3D ecc) così come lo sviluppatore ha deciso che funzioni.
Quindi questo può chiaramente influire sull'uso della batteria, poichè l'applicazione viene utilizzata pienamente dall'utente in tutte le sue funzioni, e attinge a tutte le risorse hardware di cui ha bisogno e per cui è stata creata a bisogno dell'utente.
Quando smettiamo di usarla questa può benissimo non essere chiusa, ma viene "ibernata" in questo caso l' applicazione si dice in "BACKGROUND" non usa la CPU nè nessun altro componente hardware ma occupa solo uno spazio in RAM.
Non tutti sanno che la RAM non consuma energia, poichè lo stato dei bit al suo interno non è ACCESO o SPENTO, ma vi è una tensione differente che consente di memorizzare le informazioni.
Ciò vuol dire che non vi è nessun dispendio di energia se la RAM è occupata o meno, semplicemente quella parte non può essere usata perchè appunto è occupata. Perciò un applicazione che è in background è come se non esistesse affatto.
COME GESTISCE LE APPLICAZIONI ANDROID?
Bene dico sempre che Android gestisce le applicazioni e di conseguenza la RAM in maniera egregia ed è vero, perchè Android se abbiamo bisogno di RAM ed essa è occupata si occuperà lui di chiudere le applicazioni che non sono necessarie e lo farà in quest ordine
Applicazioni che non usano servizi
Applicazioni che li usano
Se ad esempio abbiamo la memoria satura, perchè stiamo usando molte applicazioni che abbiamo aperto, come you tube, polaris office, astro, twitter facebook gmail, e ci viene voglia di giocare ad un gioco pesante, android chiuderà automaticamente prima office, you tube e astro; e poi se la memoria ancora non basta facebook twitter ecc.
Android è anche perfettamente in grado di riconoscere quando un applicazione non è usata per molto tempo e di chiuderla al bisogno e oltre a ciò di riconoscere le applicazioni che non rispondono, o che sono in loop o in crash e che non rispondono ai segnali di sistema e di chiudere anche queste.
Ed è proprio per questa paura che entrano in gioco i task killer, essi non chiudono infatti solo le applicazioni che servono come fa android, ma la maggior parte di essi chiudono ed agiscono su altri programmi e servizi in RAM e quindi agiscono al posto del sistema operativo.
Questo HA UN COSTO IN ENERGIA perchè cambia lo stato della RAM.
Se poi si impostano di farlo in maniera periodica è ancora peggio poichè stressano la RAM in continui cambi di stato, che si traduce in un consumo di batteria maggiore, ma non solo le applicazioni e i relativi servizi che servono al sistema saranno costretti a rifare tutto il ciclo, quindi AVVIARSI usare le risorse, e tornare di nuovo in background cambiando nuovamente lo stato della RAM andandola ad occupare e consumando più energia.
Quando può essere utile un task killer o killare un applicazione?
Personalmente ancora non mi è mai capiato di usarli, ma potrebbero esistere alcune applicazioni avviate IN FOREGROUND che utilizzano in maniera spropositata la batteria non tenendo conto dei nostri dispositivi che hanno un autonomia limitata.
Se proprio si ha bisogno di queste applicazioni ed è indispensabile allora si può usare un task killer IN MANIERA SELETTIVA, solo per quella particolare applicazione, ma in questo caso onestamente trovo molto più utile il TASK MANAGER DI ANDROID o è una cosa addirittura migliore DISINSTALLARE questa applicazione "scritta con i piedi" e preferire altre che tengano più a cuore la batteria del nostro dispositivo.
Alla luce di tutto ciò in molti appena visualizzano le applicazioni in background di android vanno subito sul market e installare un task killer per paura che qualche applicazione in background consumi tutta la batteria e rallenti il telefono consumando la memoria...e allora un ulteriore approfondimento se ancora non vi siete stufati di leggere!
Primo Punto
Android è figlio di linux e non di Windows, in Windows hanno senso programmi che puliscono e ottimizzano la memoria, in linux no e si comporta allo stesso modo se hai 10 o 100MB di memoria libera.
Come gestisce le applicazioni Android
Le applicazioni e i processi in Android hanno 3 stadi definiti:
1) In Esecuzione
2) In Pausa
3) Stoppati
Ogni applicazione viene eseguita in un proprio processo Android inizia il processo quando c'è bisogno di essere eseguito e lo termina quando non è più necessario, essa vive in un proprio mondo e il suo codice in esecuzione è isolato da tutto il resto con una Virtual Machine propria, ad essa viene assegnato un ID i cui permessi sono visibili all'utente e all' applicazione stessa.
Nel caso un applicazione ha bisogno di condividere i file con un altra applicazione viene creato un unico ID per risparmiare memoria con un unica Virtual Machine anche lei condivisa.
I servizi sono attivi fin tanto che ne hanno bisogno così come le attività che richiedono la connessione dati e ogni processo di Android. Per capirci se un applicazione o un qualsiasi processo ha bisogno di connettersi in rete e verificare se non vi siano aggiornamenti essa è attiva quel tanto che fà questa operazione.
Non è un bene terminare queste operazioni perchè o il processo tornerà immediatamente attivo ricominciando tutto da capo o nel momento che andiamo ad aprire un applicazione essa impiegherà più tempo per aprirsi.
Tutti i processi vengono terminati quando non ce ne è più bisogno o quando viene richiesta memoria da altri processi.
Se un utente lascia un task per molto tempo il sistema cancella tutte le attività tranne quelle di root , e quando l'utente torna nel task esso è come l'utente l'aveva lasciato.
Un applicazione è in esecuzione quando appunto l'utente la sta eseguendo ed è in primo piano per il sistema
Quando essa non è più al centro dell' attenzione ma può essere ancora visibile viene messa in pausa e può essere killata dal sistema in caso di necessità per estrema scarsità di memoria
Infine l'applicazione viene stoppata, mantiene tutte le informazioni ma non è più visibile sullo schermo ed è in background, può essere killata da Android per qualsiasi altra attività che ha bisogno di memoria.
Riepilogando Android è progettato per killare i tasks quando:
C'è bisogno di più memoria
Hanno finito la loro attività
Non vengono usate per molto tempo
Killare processi "a mano" può portare a effetti indesiderati come mancata ricezione di messaggi, rallentamenti, crash dei widget ecc
La maggior parte delle applicazioni si chiude con il tasto BACK e comunque anche premendo il tasto HOME Android chiuderà il task dopo che questo sarà stato in background per un certo periodo di tempo.
La maggior parte dei servizi che girano in background utilizza pochissima memoria quando non stanno facendo qualcosa così anche tutti gli altri processi (notifiche ecc)
Domada: Ma perchè mi si apre google maps, facebook mail ecc.
Questi programmi non sono effettivamente "aperti" se ci fate caso sono tutti programmi che hanno bisogno di connessione di rete, quando si accende il telefono essi non fanno altro che controllare aggiornamenti e notifiche per poi richiudersi.
Se killiamo queste attività succede che la maggior parte di esse si riaprirà ricominciando tutto da capo oppure impiegheranno più tempo ad aprirsi quando ne avremo bisogno, o ancor peggio non ci daranno informazioni esatte e aggiornate o non funzioneranno a dovere oltre a sfruttare molto di più il processore.
Tengo a precisare che questa piccola guida sono solo dei consigli che vi do, ogni uno è in grado di ragionare e usare il dispositivo come meglio crede e come secondo il proprio gusto è meglio per lui.
Nessuno vi obbliga a NON USARE O USARE una determinata cosa, ma ciò che ho illustrato sono semplici nozioni acquisite leggendo in rete, e usando i dispositivi Android.
Perciò ogni uno è libero e padrone di usare il proprio dispositivo come meglio crede, anche di lanciarlo sotto un treno, se desidera, siamo in un paese democratico :)
Se per voi i task killer sono utili, usateli pure, a mio modesto e umilissimo parere sono del tutto inutili! ;)
Spero sia stata esaudiente! ;)
Per quanti si intendono di programmazione o vogliono semplicemente approfondire vi rimando QUI.
Thanks to crimescene