Jump to content
Nokioteca Forum
Sign in to follow this  
Il.Socio

[Guida] Ram E Comprensione Del Suo Funzionamento Su Android (Crimescene)

Recommended Posts

Riporto qui sotto una guida realizzata da crimescene, il quale ha fornito una descrizione ineccepibile dell'argomento, ed è una guida che, dovrebbero leggere con molta attenzione coloro che si fanno un sacco di pippotti su ram, processi e similari.

La morale di fondo è che, a volte, l'utente che non conosce affatto tali argomenti, gestisce il proprio cellulare molto meglio di chi ritiene di conoscerli, ma, in realtà, li conosce solo parzialmente :)

Segue testo originale.

Salve a tutti, molti già mi conoscono, voglio oggi spiegare in parole che spero siano 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 :) Almeno spero.....

COME GESTISCE LA RAM ANDROID? e PERCHE'?

E' una domanda che si ripetono in molti, 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 è.

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, soprattutto quando ne abbiamo a disposizione, è che NON CONSUMA ENERGIA se occupata o meno.

L'EQUAZIONE PIU' RAM LIBERA = PIU' VELOCITA' E' SBAGLIATA

L'EQUAZIONE RAM LIBERA = MENO CONSUMO E' ANCHE LEI 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 o comunque viene utilizzata a pieno, apriamo ad esempio il navigatore, questo è in primo piano sullo smartphone e sfrutta tutto ciò che deve e ha bisogno di sfruttare, 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 onCreate() onStart() onResume() è 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, anche se a noi sembrerà per la velocità degli smartphone moderni che sia uguale...

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 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 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 quresto 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, 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 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 si ha abbastanza RAM a disposizione 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.

ANALISI FINALE CONSIDERAZIONI E CONCLUSIONI

Adesso che sappiamo come gestisce il sistema Android, possiamo anche iniziare a capire il perchè alcune applicazioni DEVONO rimanere aperte o lo rimangono.

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, essendo un sistema MOBILE e basato in gran parte sul cloud, la rete e la geolocalizzazione, esso agisce nel modo in cui ci fa RISPARMIARE IL MASSIMO DI BATTERIA POSSIBILE A SECONDA DI COME LO ABBIAMO CONFIGURATO. Ovvero secondo gli ordini che gli abbiamo impartito in fase iniziale.

Appare subito chiaro a questo punto PERCHE' 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 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.

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.

Se mi avete seguito fino adesso capirete ora che bastano piccole accortezze per fare durare molto di più la batteria 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.

Se volete approfondire sulla vita e la morte delle applicazioni in android c'+è sempre la BIBBIA di Android che è il sito di google e la base dove cominciare ovvero ANDROID DEVELOPER

Un buon proseguimento a tutti voi :D E' stata dura ma anche stavolta è fatta...

Edited by Il.Socio
  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...