Magazine Tecnologia

Come gestisce la RAM Android?

Creato il 30 aprile 2012 da Riccardo Conti @YourLifeUpdated

Gestione RAM e Android: come funziona il tutto

gestione memoria android Come gestisce la RAM Android?

Pensate che un task killer sia indispensabile per il vostro smartphone Android?

Volete un programma che chiuda automaticamente tutte le applicazioni aperte su Android?

Forse, allora, vi farà bene leggere questo interessante articolo.

Anche io, fino a qualche tempo fa, pensavo che un maggior consumo di RAM su Android corrispondesse ad un maggior consumo di batteria. In linea di massima, però, questa equazione non è verificata nel mondo Android. 

Questo perchè il sistema operativo di Google è studiato appositamente in modo da gestire al meglio i programmi aperti ed il multitasking. Con questo non voglio dire che un task manager non serva su Android, ma solo che, prima di pensare che sia indispensabile chiudere tutti i programmi in background su Android per risparmiare RAM e batteria, è bene conoscere almeno le basi del funzionamento di Android.

Per assurdo, infatti, potrebbe accadere che un task killer aumenti il consumo di batteria del vostro smartphone. Ma come è possibile questo?

Date una letta a quello che trovate  di seguito e capirete in modo preciso e dettagliato come funziona la gestione della memoria RAM su Android. Vi saranno chiariti molti dubbi e finalmente verrà fatta chiarezza, una volta per tutte, sul multitasking in Android e sulla necessità di avere o meno un task killer.

Piccola premessa: quello che trovate di seguito non è farina del mio sacco, ma trovate la fonte a fine articolo. 


Android e la gestione della memoria RAM

Vediamo di capire, in parole chiare e comprensibili a tutti, il funzionamento della memoria RAM e delle applicazioni in genere su Android.

Alcuni utenti, approdando ad Android, notano subito che Android funziona in maniera “diversa” e come ogni novità questo a molti desta sospetti e paure che la maggior parte delle volte sono infondate. Una volta che avrete letto questa guida vi sarà tutto molto più chiaro.

Come viene gestita la memoria RAM su Android? 

Innanzitutto bisogna distinguere che esistono vari tipi di applicazioni che girano su Android (come su altri sistemi), e bisogna anche distinguere lo stato in cui questa applicazione si trova.

Prima di tutto dobbiamo iniziare a dire che, quando un applicazione viene aperta, occupa, come tutti i sistemi, uno spazio in RAM che può essere più o meno grande.

Bisogna anche chiarire che la RAM DEVE ESSERE OCCUPATA affinchè ogni sistema funzioni in maniera corretta.

L’EQUAZIONE PIU’ RAM LIBERA = PIU’ VELOCITA’ E’ SBAGLIATA
L’EQUAZIONE RAM LIBERA = MENO CONSUMO E’ ERRATA

Vedremo più avanti il perchè, ma prima di tutto dobbiamo capire come funzionano le applicazioni su Android, la loro vita, la loro morte, e come il sistema le gestisce. Solo così potremmo poi capire. Premettiamo innanzitutto che ogni applicazione vive in un mondo proprio, ha un suo spazio preciso in RAM, viene creata una java virtual machine propria (la dalvik cache). Non può agire direttamente sul sistema, ma è sempre il sistema che agisce ed esegue ordini per conto dell’applicazione.

Abbiamo quindi due possibili condizioni:

Applicazioni in FOREGROUND
Applicazioni in BACKGROUND

Le applicazioni poi possono usufruire di particolari entità chiamati “servizi” che sono indispensabili per svolgere alcune operazioni. I servizi sono particolari porzioni di codice o programmi che servono appunto a svolgere alcune fondamentali operazioni.

APPLICAZIONI IN FOREGROUND

Un’applicazione è in foreground quando la stiamo utilizzando: apriamo ad esempio il navigatore, questo è in primo piano sullo smartphone e sfrutta tutto ciò che ha bisogno di sfruttare, quindi il processore, la connessione dati, il GPS e tutto ciò che serve e per cui è stata programmata.

Al livello di codice ci troviamo in uno stato di onCreate() onStart() onResume(). E’ importante sapere gli stadi in cui viene eseguito un certo codice, perchè questo vorrà anche dire che l’applicazione stessa dovrà compiere delle operazioni preliminari prima di avviarsi (come ad esempio controllare che sia aggiornata, caricare dei dati, connettersi alla rete ecc). E’ infatti quando viene avviata e quando la si utilizza che un applicazione ha il maggior consumo in assoluto.

Un’applicazione che non è chiusa non deve ripetere appunto gli stadi di codice onCreate() e onStart(), questi infatti richiedono sempre un dispendio in termini di energia.

APPLICAZIONI IN BACKGROUND

Le applicazioni in background sono quelle applicazioni che non sono più in primo piano, ma sono ancora in memoria RAM. La maggior parte delle applicazioni viene mandata in background una volta che premiamo Back o HOME su Android, la differenza tra premere questi due tasti è che premendo HOME ritroveremo l’applicazione esattamente dove l’avevamo lasciata, e quindi se stavamo scrivendo qualcosa troveremo anche il cursore. Premendo BACK invece vuol dire che abbiamo finito di fare il nostro lavoro, e l’applicazione ripartirà dalla sua schermata iniziale.

Per molti giochi, usare back vuol dire anche chiamare l’uscita dal gioco.

Un’applicazione in background che non ha servizi non consuma assolutamente nulla, non rallenta il sistema, nè sfrutta risorse, non utilizza il processore o quant’altro è praticamente “congelata” ed il sistema può decidere se chiuderla o meno a seconda della quantità di RAM a disposizione. In questo stadio al livello di codice l’applicazione va onPause() onStop() e nel caso venga riutilizzata viene chiamato il comando onRestart().

Se serve RAM essa viene chiusa, e il suo spazio occupato dalla nuova applicazione se non serve essa rimane per un certo periodo di tempo in beckground, fino a che Android non la chiude, proprio perchè è passato molto tempo.

Quindi le applicazioni in genere vengono chiuse quando:

1) Il sistema ha bisogno di più RAM
2) Non viene usata per un certo periodo di tempo

Al livello di codice viene richiamato il comando onDestroy()

I SERVIZI

I servizi sono particolari programmi o particolari porzioni di codice che vengono usate per molti scopi grazie a questi possiamo usufruire del multitasking e grazie ad essi possiamo svolgere più attività in contemporanea.

Le applicazioni che usano servizi rimangono in background e il modo in cui questi servizi vengono “attivati” sono decisi dallo sviluppatore di solito, ma spesso si può anche cambiare qualcosa dalle impostazioni dell’ applicazione stessa, come ad esempio il tempo in cui un applicazione si sincronizza. Possiamo abilitare disabilitare anche in qualche caso alcuni di essi come il servizio di localizzazione ecc.

E’ importante sapere che un servizio può essere usato anche da più applicazioni e un applicazione può usare anche diverse altre applicazioni già presenti nel sistema la RAM occupata verrà condivisa e anche la dalvick cache verrà condivisa così i file usati, in maniera da utilizzare e ottimizzare il tutto.

Android nella gerarchia di chiusura delle applicazioni userà questo criterio per chiuderle in caso di necessità di RAM:

  • applicazioni SENZA servizi PRIMA
  • applicazioni CON servizi POI

Naturalmente oggi si ha abbastanza RAM a disposizione e quindi più difficilmente si giunge a chiudere tutto.
Se abbiamo ad esempio you tube, gmail, facebook, twitter, galleria e document to go aperti, e ad esempio apriamo un gioco pesante come NOVA 2 il sistema chiuderà prima document to go e youtube, poi facebook, twitter, gmail ecc, finchè non avrà abbastanza RAM di sistema per avviare il gioco.

ANALISI FINALE CONSIDERAZIONI E CONCLUSIONI

Adesso che sappiamo come gestisce la RAM il sistema Android, possiamo iniziare a capire perchè alcune applicazioni debbano rimanere aperte.

Innanzitutto NON E’ VERO che alcune applicazioni si aprono da sole, NULLA SI APRE DA SOLO. Quando configuriamo il sitema per la prima volta impartiamo anche degli ordini al sistema e quindi molto dipenderà anche dalle impostazioni modificate da noi.

Appare subito chiaro a questo punto perchè alcune applicazioni si riaprono immediatamente anche se le chiudiamo, e perchè è contraddittorio e inutile usare un task killer. Il sistema non fa altro che agire secondo l’ordine che gli abbiamo impartito.

Se noi infatti accediamo a Facebook e sincronizziamo i contatti, diamo anche l’ordine al sistema di tenere facebook aggiornato e di controllare che i nostri contatti siano in rubrica e aggiornati secondo il tempo di sincronizzazione che abbiamo deciso. Ciò vuol dire che Facebook deve essere necessariamente avviato ogni volta che riavviamo il telefono e che abbia i suoi servizi attivi. Inoltre, anche altre applicazioni che abbiamo installato possono usufruire di tutte le informazioni che ha Facebook se necessario, e questo senza che l’applicazione di per se si apra necessariamente e aggiorni di nuovo. Se non si vuole che Facebook o qualsiasi altra applicazione di questo tipo faccia tutto ciò, basta fare il logout.

Questo vale anche per Maps, twitter, gmail, e qualsiasi altra applicazione che utilizza un servizio.

Dunque, appare chiaro come bastino piccole accortezze per fare durare molto di più la batteria e per raggiungere un buon compromesso tra la possibilità di avere informazioni in tempo reale e una durata della batteria accettabile, semplicemente aumentando il tempo di sincronizzazione dei vari account, laddove non è in push.

Se volete approfondire sulla vita e la morte delle applicazioni in android c’è sempre il sito di google e la base dove cominciare ovvero Android Developer.

Via

Se l’articolo ti è stato utile, magari potrebbe piacere o interessare anche ai tuoi amici.

Condividilo sui principali social network utilizzando i pulsanti che trovi sulla sinistra.

Inoltre, ti consiglio di abbonarti ai nostri Feed RSS, per restare sempre aggiornato su tutte le principali novità dal mondo hi-tech.

Infine, seguici su Twitter, Facebook e YouTube, per partecipare a concorsi esclusivi e guardare in anteprima le nostre gallerie foto e video.


Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :