Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [center][B][U][COLOR="#FF0000"][SIZE=5]RAM - Comprensione del suo funzionamento su Android[/SIZE][/COLOR][/U][/B][/center]
- [B]PREMESSA:[/B] riporto una guida utilissima su gentile concessione dell'utente [URL="http://www.androidiani.com/forum/members/crimescene.html"]crimescene[/URL] a cui vanno dati i ringraziamenti e tutti i crediti [URL="http://www.androidiani.com/forum/android-tips-tricks/85108-guida-ram-e-comprensione-del-suo-funzionamento-su-android.html"]-> QUI <-[/URL]
- 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 Almeno spero.....
- [LIST]
- [*][COLOR="#0000FF"][B][U]COME GESTISCE LA RAM ANDROID? e PERCHE'?[/U][/B][/COLOR]
- [/LIST]
- E' una domanda che si ripetono in molti, innanzitutto bisogna distinguere che esistono [B]vari tipi di applicazioni[/B] che girano su Android (come su altri sistemi), e bisogna anche distinguere [B]lo stato[/B] in cui questa applicazione è.
- 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 [COLOR="#FF0000"]RAM DEVE ESSERE OCCUPATA[/COLOR] affinchè ogni sistema funzioni in maniera corretta,[B]soprattutto quando ne abbiamo a disposizione[/B], [B][U]e che NON CONSUMA ENERGIA se occupata o meno[/U][/B].
- [COLOR="#FF0000"][B]L'EQUAZIONE PIU' RAM LIBERA = PIU' VELOCITA' E' SBAGLIATA
- L'EQUAZIONE RAM LIBERA = MENO CONSUMO E' ANCHE LEI ERRATA[/B][/COLOR]
- Vedremo più avanti il perchè, ma prima di tutto dobbiamo [B]capire come funzionano le applicazioni su android[/B], la loro vita, la loro morte, e come il sistema le gestisce. Solo così potremmo poi capire. Premettiamo innanzitutto che [U][B]ogni applicazione vive in un mondo proprio[/B][/U], ha un suo spazio preciso in RAM, viene creata una java virtual machine propria (la dalvik cache).
- [B]Non può agire direttamente sul sistema, ma è sempre il sistema che agisce ed esegue ordini per conto dell'applicazione.[/B]
- Abbiamo quindi due possibili condizioni:
- [B]Applicazioni in FOREGROUND
- Applicazioni in BACKGROUND[/B]
- 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.
- [LIST=1]
- [*][B]APPLICAZIONI IN FOREGROUND[/B]
- Un applicazione è in foreground quando la stiamo utilizzando o comunque viene utilizzata a pieno, apriamo ad esempio il navigatore, questo è in primo piano sullo smartphone e sfrutta [B]tutto ciò che deve e ha bisogno di sfruttare[/B], quindi il processore, la connessione dati, il GPS e tutto ciò che serve e per cui è stata programmata allo scopo di farci fare ciò che dobbiamo.
- Al livello di codice ci troviamo in uno stato di [COLOR="#FF0000"][i]onCreate() onStart() onResume()[/i][/COLOR] è importante sapere gli stadi in cui viene eseguito un certo codice, perchè questo vorrà anche dire che l'applicazione stessa dovrà [B]compiere delle operazioni preliminari prima di avviarsi[/B] (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.
- [I]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, anche se a noi sembrerà per la velocità degli smartphone moderni che sia uguale... [/I]
- [*][B]APPLICAZIONI IN BACKGROUND[/B]
- Le applicazioni in background sono quelle applicazioni che [B]non sono più in primo piano[/B], ma sono ancora in memoria RAM.
- [B]La maggior parte delle applicazioni viene mandata in background una volta che premiamo Back o HOME[/B] su Android, la differenza tra premere questi due tasti è che [B]premendo HOME ritroveremo l'applicazione esattamente dove l'avevamo lasciata, e quindi se stavamo scrivendo qualcosa troveremo anche il cursore..[/B]
- Premendo BACK invece vuol dire che [B]abbiamo finito di fare il nostro lavoro[/B], e l'applicazione ripartirà dalla sua schermata iniziale.
- Per molti giochi, usare back vuol dire anche chiamare l'uscita dal gioco, un gioco comuinque di solito richiede una quantità di RAM che è il primo ad essere chiuso in ogni caso...
- Un applicazione in background che non ha servizi [B][U]non consuma assolutamente nulla[/U][/B], 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[B] a seconda della quantità di RAM a disposizione.[/B]
- In quresto stadio [I]al livello di codice l'applicazione va onPause() onStop() e nel caso venga riutilizzata viene chiamato il comando onRestart()
- [/I]
- 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:
- [B][COLOR="#FF0000"]1) Il sistema ha bisogno di più RAM
- 2) Non viene usata per un certo periodo di tempo[/COLOR][/B]
- ----------
- [COLOR="#0000FF"]Ricordatevi di ringraziare l'autore (non me) se avete trovato questa guida utile qui ->[/COLOR] [url]http://www.androidiani.com/forum/android-tips-tricks/85108-guida-ram-e-comprensione-del-suo-funzionamento-su-android.html[/url]
- [I]Al livello di codice viene richiamato il comando onDestroy()[/I] [/list]
- [LIST]
- [*][B]I SERVIZI[/B]
- [/LIST]
- I servizi sono particolari programmi o particolari porzioni di codice che vengono usate per molti scopi grazie a questi possiamo [B]usufruire del multitasking e grazie ad essi possiamo svolgere più attività in contemporanea[/B].
- Le applicazioni che usano servizi rimangono in background, il modo in cui questi servizi vengono "attivati" sono decisi dallo sviluppatore di solito, ma spesso[B] si può anche cambiare qualcosa dalle impostazioni dell' applicazione stessa, come ad esempio il tempo in cui un applicazione si sincronizza[/B]. Possiamo abilitare disabilitare anche in qualche caso alcuni di essi come il servizio di localizzazione ecc.
- E' importante sapere che un servizio [B]può essere usato anche da più applicazioni[/B], e un applicazione può usare anche diverse altre applicazioni già presenti nel sistema [B]la RAM occupata verrà condivisa[/B] 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 chiudere le stesse; se il sistema ha bisogno di RAM Userà questo tipo di gerarchia:
- applicazioni SENZA servizi PRIMA
- applicazioni CON servizi POI
- Naturalmente oggi [B]si ha abbastanza RAM a disposizione[/B] e quindi più difficilmente si giunge a chiudere tutto, ma può succedere se il gioco è piuttosto pesante, comunque non si arriva mai a chiudere i servizi stessi, il che vuol dire che saremmo sempre in grado di ricevere tutte le nostre notifiche anche quando stiamo giocando o svolgendo qualcos'altro.
- Se abbiamo ad esempio you tube, gmail, facebook, twitter, galleria e document to go aperti, e ad esempio apriamo un gioco pesante come NOVA2 il sistema chiuderà prima document to go e youtube, poi facebook,twitter, gmail ecc. finchè non avrà abbastanza RAM il sistema per svolgere il gioco.
- [U][B]ANALISI FINALE, CONSIDERAZIONI E CONCLUSIONI[/B][/U]
- Adesso che sappiamo [B]come gestisce il sistema Android[/B], possiamo anche iniziare a capire il [U]perchè alcune applicazioni DEVONO rimanere aperte o lo rimangono[/U].
- Innanzitutto [B]NON E' VERO che alcune applicazioni si aprono da sole, NULLA SI APRE DA SOLO[/B].
- Quando configuriamo il sitema per la prima volta [B]impartiamo anche degli ORDINI al sistema[/B], essendo un sistema MOBILE e basato in gran parte sul cloud, la rete e la geolocalizzazione, esso agisce nel modo in cui ci fa [B]RISPARMIARE IL MASSIMO DI BATTERIA POSSIBILE A SECONDA DI COME LO ABBIAMO CONFIGURATO[/B]. Ovvero secondo gli ordini che gli abbiamo impartito in fase iniziale.
- Appare subito chiaro a questo punto [B]PERCHE' alcune applicazioni si riaprono immediatamente anche se le chiudiamo, e perchè è contraddittorio e inutile usare un task killer[/B].
- 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 temo 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.
- Questo per risparmiare batteria, poichè avvieremo facebook una volta sola, esso si aggiorna, aggiorna i contatti, e poi va in background fino alla prossima sincronizzazione.
- 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 e aggiorni di nuovo.
- [U][B]
- Se non si vuole che Facebook o qualsiasi altra applicazione di questo tipo faccia tutto ciò, basta fare il logout.[/B][/U]
- Questo vale anche per Maps, twitter, gmail, e qualsiasi altra applicazione che utilizza un servizio.
- Se mi avete seguito fino adesso capirete ora che [B]bastano piccole accortezze per fare durare molto di più la batteria[/B] e come 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, la dove non è in push.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement