La tecnologia sta facendo passi da gigante, e non solo da un punto di vista software, ma anche hardware; questi devono essere visti come due binari paralleli, e che si sviluppano solo al crearsi di date condizioni e al miglioramento reciproco (un grande apparato software ha bisogno che lo sorregga un grande apparato hardware e viceversa). Sicuramente, ben presto, grazie allo snapdragon 835 vedremo dispositivi con molti più giga di ram a bordo (si parla di 8, ma probabilmente anche qualcosa in più - Tra cui, il Nubia Z17 o Zenfone AR). Restando in tematica strettamente "mobile", poniamoci una domanda; ma effettivamente, quanti giga di ram occorrono ad un device per funzionare egregiamente? Sono davvero utili dispositivi con 3/4/5 giga di ram? Le grandi case produttrici giocano molto su questi dati, in quanto, cercano di accattivare il cliente attraverso valori di RAM piu alti - dall'altra parte invece - il cliente (sbagliando) tiene poco conto di fattori essenziali come la CPU e degli altri componenti hardware.
La memoria RAM tiene conservati i dati in maniera “volatile” tenendo in esecuzione parti dell'OS e programmi, ma d'altra parte ha anche il compito di garantire tempi di accesso velocissimi (alle richieste che formula l'utente) “supportando” quindi la memoria fisica (interna ed esterna, per l'archivio).
Le RAM moderne inoltre permettono il Multi-Tasking, funzione di grande rilevanza nei device di oggi che permette l'esecuzione contemporanea di più applicativi nello stesso momento e di andarli a richiamare ogni volta che ne si ha necessità. C'è da dire che mentre su Windows tale funzione è più manuale (in alcuni casi, necessario il task manager per terminare i processi ancora aperti), su Android (ma anche IOs) la seguente features è più ottimizzata e calibrata, e ciò permette una esperienza più agevole nell'uso del dispositivo. Ma quindi, quanta RAM serve? Per le stime basate da Lollipop (Android 5.0) in su, 2GB di Ram sono più che sufficienti tenendo in considerazione che su di un device con SoC 64 Bit sono previsti almeno 832 MB di RAM. Dato questo dato, i dispositivi con un solo giga di RAM sono ormai da scartare a priori. Sono quindi necessari 6/8 Giga di Ram? No, o almeno, non in questo momento; non esistono funzioni nei sistemi operativi che richiedono risorse cosi esose. Diffidate inoltre dalle applicazioni che vi promettono di pulire la memoria RAM; Essa, essendo volatile, si resetterà solo al riavvio/spegnimento del dispositivo in questione. D'altro canto dovete tenere in considerazione che i sistemi operativi stessi (Android & IOs) tendono a dare una valutazione a ogni processo che mette in evidenza quanto un oggetto caricato in RAM sia o meno essenziale in quel momento; ciò almeno vale per Android, in quanto possiede un driver interno appositamente per tale scopo (l’LMK) - Per Iphone la situazione è un pò diversa. Premettendo che IOs gestisce in maniera intelligente l'uso della RAM, vi possono essere delle anomalie/rallentamenti che possono essere provati a risolvere mediante la pulizia della memoria RAM stessa - ma come?
1) Sblocca l'iphone 2) Tieni premuto il tasto di spegnimento finche non compare la scritta adibita per lo spegnimento, e rilascialo subito dopo 3) Premi il tasto Home fino a quando iOS non chiude tutte le App aperte (inclusa la schermata di spegnimento)
Se tutto è andato bene, vi ritroverete sulla Home, e tutti i servizi inutilizzati saranno arrestati. Esistono anche qui software che agiscono in tal senso, ma il miglior modo resta il manuale.
Dato tutto ciò tenere in considerazione solo "RAM" o "Batteria" sarebbe un errore per la scelta di un device - non lasciatevi ingannare
RAM LIBERA = PIU' VELOCITA' = SBAGLIATO RAM LIBERA = MENO CONSUMO = SBAGLIATO
Consumi e velocità dipendono da molti altri fattori; software a bordo, applicativi presenti, potenza del processore. E quindi? Diciamo innanzitutto che ogni applicazione vive in un mondo a se, ha un suo spazio in RAM, e viene creata una java virtual machine propria (la dalvik cache). Le applicazioni non possono agire direttamente sul sistema, ma è il sistema che agisce, eseguendo gli ordini per conto delle applicazioni.
Abbiamo quindi due possibilità:
Applicazioni in FOREGROUND Applicazioni in BACKGROUND
Le Applicazioni inoltre possono essere predisposte al loro interno a contenere delle entità che noi chiamiamo "servizi"; questi sono indispensabili per svolgere alcune operazioni, i servizi non sono nient'altro che parti di codice o programmi che servono a svolgere alcune funzioni fondamentali dell'applicazione stessa (notifiche, ad esempio).
APPLICAZIONI IN FOREGROUND
Un'applicazione è in foreground quando è aperta in primo piano e la stiamo utilizzando in tutte le sue potenzialità, apriamo ad esempio il broswer di sistema; questo quando è avviato in primo pianto sfrutta tutto ciò che deve, quindi il processore, la connessione dati, il GPS (se attivato) e tutto ciò che occorre per lo scopo che ha.
Ci ritroviamo (da un punto di vista di codice) in uno stato di onCreate()onStart()onResume() (stato piu dispendioso) - è importante sapere gli stadi in cui viene eseguito un certo codice, perchè questo vorrà anche dire che:
- Ci saranno delle operazioni preliminari da eseguire prima che l'applicazione si avvii (controllare che sia aggiornata, caricamento dei file, connettersi alla rete). - Pare logico che il consumo più elevato avviene quando una applicazione è avviata e sfruttata in tutte le sue potenzialità
APPLICAZIONI IN BACKGROUND
Le applicazioni in background non sono più in primo piano, ma sono quelle ancora in memoria RAM. Quasi tutte le applicazioni vengono mandate in background quando premiamo "Back" o "HOME" su Android, la differenza tra premere questi due tasti è: - Premendo HOME ritroveremo l'applicazione al punto in cui l'avevamo lasciata, e quindi ritroveremo il cursore al suo posto se stavamo scrivendo qualcosa. - Premendo BACK invece vuol dire che il lavoro è terminato e l'applicazione ricomincerà dall'inizio.
Un applicazione senza servizi in background non ha consumi, non porta rallentamenti, non sfrutta risorse, non utilizza il processore o quant'altro - è "congelata" ed il sistema decide se chiuderla o no a seconda della quantità di RAM a disposizione. In questo stadio l'applicazione va onPause() onStop() e nel caso venga riutilizzata viene chiamato il comando onRestart()
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
I SERVIZI
i servizi sono particolari porzioni di codice che vengono usufruite per differenti motivazioni. Grazie a ciò possiamo usufruire del multitasking e quindi della possibilità di avviare più attività simultaneamente. Le applicazioni che usano servizi rimangono in background, ma il metodo di attivazione, e tutte le dinamiche del caso, sono scelte dallo sviluppatore - anche se a volte è possibile variare qualcosa dalle impostazioni dell'applicazione stessa, come ad esempio il tempo di sincronizzazione.
C'è da aggiungere che un servizio può essere sfruttato da più applicazioni, e un applicazione può usare anche diversi servizi di sistema.
Android, come sistema di chiusura delle app, usa alcuni principi gerarchici (in caso di esaurimento RAM);
- Applicazioni without services (senza) PRIMA
- Applicazioni with services (con) DOPO
Naturalmente, mediante sistemi operativi intelligenti, e quantitativi di ram ampi, queste situazioni sono del tutto evitabili; ovviamente bisogna tenere in considerazione anche l'uso di giochi in HD - perchè questi richiedono quantitativi di RAM elevati e potrebbero generare problematiche ad un dispositivo di fascia bassa (rallentamenti, lag, e malfunzionamenti di sistema)
E voi? Resettate la RAM? Continuate a seguirci per ulteriori articoli.