Sony ha pubblicato sul proprio blog un’interessante post in cui ha confrontato Gingerbread e Ice Cream Sandwich sul piano tecnico, offrendo ai lettori una visione più approfondita di quella normalmente a nostra disposizione. Inizialmente sembrava che Sony avesse scritto l’articolo quasi per “denigrare” Ice Cream Sandwich attraverso la messa in luce di alcuni aspetti “negativi”, ma un aggiornamento successivo ha reso chiaro che la società nipponica ha provveduto a sistemare tutte le negatività che potrete leggere più avanti. Vi proponiamo una traduzione fedele del post originale, così da essere quanto più possibile aderenti al messaggio di Sony.

“Come avete potuto vedere, vi abbiamo continuamente tenuti aggiornati riguardo agli aggiornamenti a ICS, e abbiamo cominciato dicendovi cosa avremmo fatto per rendere l’ultima release del software di Google funzionante sui nostri smartphone Xperia nell’articolo Ice Cream Sandwich – dal codice sorgente all’aggiornamento. Quindi abbiamo rilasciato le versioni alpha e beta di ICS del futuro aggiornamento software.

Tuttavia, anche se ICS è nuovo e innovativo in molti modi, vorremmo che i nostri utenti prendessero una decisione informata riguardo la scelta del software Android da usare. Siamo davvero orgogliosi di dire che il nostro software Gingerbread è molto stabile e ha grandi prestazioni, quindi non è una cattiva idea rimanere con questa release. Ice Cream Sandwich è più pesante, ad esempio in termini di uso delle risorse. Così come gli smartphone diventano più potenti, le nostre applicazioni, e anche le applicazioni Google Mobile Services (GMS), stanno diventando più avanzate, il che significa che richiedono più potenza da parte della CPU, hanno più attività di rete e usano più RAM. D’altro canto, ICS porta una UI rifinita e alcune interessanti funzionalità, come descritto più avanti.

Nuove funzionalità in ICS

Dal punto di vista dell’UI, ICS è basato su un nuovo look and feel, il tema Holo. Per poter far posto al nuovo look di Android, abbiamo deciso di apportare grandi cambiamenti alle nostre risorse, visto che le risorse grafiche del tema Holo non possono essere cambiate in nessun modo come definito dall’Android Compatibility Definition Document (CDD). Nuovi look sono stati aggiunti alla piattaforma così come alle applicazioni. Nell’insieme, oltre mille icone sono state modificate. In più, abbiamo creato nuovi wallpaper e sfondi delle applicazioni, che si armonizzano di più con le strutture grafiche piatte di ICS.

In ICS il gestore attività ha una UI completamente nuova, dove tutte le applicazioni in esecuzione sono mostrate come icone in una lista. Per chiudere un’attività, basta semplicemente trascinarla fuori dalla lista. ICS introduce anche un’applicazione di riconoscimento del viso come metodo per sbloccare il telefono chiamata Face Unlock. Face Unlock usa la fotocamera anteriore e algoritmi di riconoscimento degli oggetti avanzati. È incluso nel nostro aggiornamento a ICS per tutti i telefoni che hanno una fotocamera anteriore.

La lista dei contatti mostrerà più informazioni sui contatti, con anche aggiornamenti dai social network. Nel calendario sono stati aggiunti dei codici di colore ed è possibile usare lo zoom. C’è anche il supporto ad un nuovo tipo di messaggi vocali che è più visivo perchè offre la trascrizione dei messaggi.

Parlando di ICS, è uno dei principali aggiornamenti di Android, e ci sono un sacco di cose che sono cambiate rispetto a Gingerbread. Alcuni di questi cambiamenti coinvolgono le prestazioni e la stabilità del sistema, ad esempio usando più CPU e RAM. ICS è stato sviluppato con in mente il Galaxy Nexus, che è basato su una piattaforma dual core di Texas Instruments e ha 1GB di RAM. Stiamo adattando ICS a funzionare sugli smartphone Xperia del 2011, che sono tutti basati su piattaforma Qualcomm con un singolo core e 512MB di RAM. Questo significa che in alcuni casi l’utilizzo di risorse di sistema da parte di ICS è più pesante rispetto a Gingerbread. Le seguenti sezioni identificano alcune aree chiave dove esiste una differenza [sostanziale] tra ICS e Gingerbread.

Uso della RAM aumentato

In generale, si può dire che la RAM è la memoria di lavoro del telefono, è usata per far funzionare le applicazioni al contrario della memoria flash, che è usata principalmente per archiviare le cose. Come potete capire, questa è una spiegazione semplificata e potrebbe non essere del tutto vera in tutti i casi. Tuttavia, può servire come aiuto per capire le differenze tra la RAM e la memoria flash del telefono. Per vedere quanta RAM è in uso in un dato momento, andate su Applicazioni nelle Impostazioni del vostro telefono Xperia.

Adesso, guardate quanta RAM è in uso. Di 512MB di RAm, un terzo è usato per funzioni che richiedono uno slot di memoria dedicato per operare sufficientemente veloci. Per esempio, questo è il caso di certe funzioni multimediali. Lo spazio rimanente, che è almeno 340MB, è riservato per lo user space di Linux, come richiesto dall’Android Compatibility Definition Document (CDD). In questo user space di Linux girano applicazioni come il gestore attività e la home.

Un’altra cosa interessante è che molte applicazioni usano più RAM in ICS. Per esempio, il browser web è più pesante, e le nostre misurazioni indicano che usa circa 20-30MB in più in ICS rispetto a Gingerbread. Dopotutto, ci sono un sacco di cambiamenti che insieme risultano in una maggiore richiesta di RAM.

L’utilizzo della RAM.

Quando c’è poca RAM a disposizione, tipicamente con meno di circa 40MB disponibili, il gestore attività comincia a chiudere processi secondo la priorità. Come prima cosa uccide attività in background. L’ultima cosa ad essere chiusa è l’attività in primo piano [l’applicazione in uso, ndr]. Abbiamo descritto brevemente questo nella tabella qui sotto. Per ulteriori informazioni, controllate su Android developers. Tutte le stime sull’uso della RAM sono approssimative e cambieranno a seconda del modello di telefono e di caso d’uso.

La tabella mostra differenti tipi di processi. Quando la RAM è in esaurimento, il gestore attività comincia a eliminare i processi dal basso verso l’alto, così che le ultime cose ad essere chiuse sono le attività in primo piano e quelle persistenti.

I processi che vengono chiusi devono ovviamente essere riavviati quando l’utente accede nuovamente all’applicazione, il che porta via tempo e rallenta il sistema. Per esempio, quando si sta usando un gioco pesante che usa tutta la RAM disponibile, il gestore attività sarà costretto a chiudere tutti i processi che lavorano in background. Questo potrebbe includere funzioni vitali come il compositore telefonico e anche la home. Quando uscite dal gioco, c’è il rischio che il telefono sia percepito come lento visto che l’applicazione home dovrà essere riavviata così come qualunque altra attività cui si accederà in seguito.

Interazioni più lente con il database SQL

Un altro cambiamento in ICS rispetto a Gingerbread è che Google ha spostato gran parte della gestione SQL dal livello nativo a Java. Nei nostri studi interni abbiamo verificato che le operazioni di lettura e scrittura verso il database SQL richiede un tempo più lungo, che rallenta le applicazioni. Molte applicazioni, quando vengono avviate, fanno molte operazioni SQL che impattano negativamente sul tempo di avvio.

Secondo una buona pratica, le operazioni sui database o le richieste http non dovrebbero essere effettuate sul thread principale. Tuttavia, sappiamo che ci sono un po’ di applicazioni che effettuano questo tipo di operazioni direttamente nel thread principale, che potrebbe far sì che altre operazioni passino in attesa. C’è anche da dire che quando abbiamo letto i feedback sul software per ICS presente sul Play Store abbiamo visto commenti di persone che hanno problemi con alcune applicazioni e alcuni giochi.

Se un’operazione richiede troppo tempo, c’è il rischio di ricevere un avviso di Application Not Responding (ANR). Un ANR avviene quando un’applicazione non risponde ad un intent, o non risponde ad un evento di input, entro un certo limite di tempo. Nel caso dell’intent, il tempo è fissato a cinque secondi. Per l’evento di input, come un tocco sullo schermo o un click su un bottone, è dieci secondi.

Questo può risultare in una user experience che è percepita come lenta e poco stabile, a causa di tempi di risposta più lunghi e ANR aumentati.

Piena accelerazione hardware

Un altro cambiamento in ICS è l’accelerazione grafica hardware attivata di default per tutte le applicazioni dal livello API 14. Per applicazioni a livelli API più bassi, può essere attivata nel [file] manifest con l’attributo android:hardwareAccelerated=”true”. L’accelerazione hardware permette di usare la GPU per il rendering della grafica, il che significa una interfaccia utente fluida. Tuttavia, ciò significa anche che è necessario caricare ulteriori librerie grafiche per certe applicazioni, che fa usare loro ancora più RAM.

Quando abbiamo effettuato i test interni sulle nostre applicazioni, abbiamo visto che l’applicazione Impostazioni consumava 1-2MB di RAM in più, e impiegava in realtà più tempo per avviarsi con l’accelerazione HW rispetto a quando non era attivata. Una volta che l’applicazione è in esecuzione, la UI è accelerata via HW, ma a meno che l’applicazione non abbia effetti grafici avanzati, l’utente non vedrà la differenza.

Un altro effetto dell’accelerazione hardware è che può far consumare la batteria più velocemente in certi casi. Un esempio è la riproduzione di video, dove l’accelerazione hardware richiede che ogni fotogramma del video passi attraverso la GPU, facendo sì che il sistema usi più energia di quella necessaria senza accelerazione HW.

Gli sviluppatori dovrebbero quindi valutare se l’accelerazione HW è necessaria o no, visto che costa in termini di RAM, di tempo di avvio e forse anche in durata della batteria, che possono avere effetti negativi sull’esperienza dell’utente. Potete leggere di più riguardo l’accelerazione hardware in Ice Cream Sandwich nell’Android Developers blog.

Quindi, quale sarà la piattaforma che sceglierete? Speriamo che questo articolo renda chiari alcuni aspetti da considerare nel prendere la decisione. Come sempre, siamo impazienti di leggere la vostra opinione, quindi lasciateci un commento e fateci sapere! Per maggiori informazioni sulle tempistiche e pratiche sull’aggiornamento ad ICS, controllate il nostro ultimo post sul Sony Xperia™ Product Blog.”

Sony ha affermato con un aggiornamento successivo che tutti i problemi elencati sono stati risolti dagli ingegneri software della società. L’intento dell’articolo era di far conoscere le differenze tra Gingerbread e Ice Cream Sandwich al pubblico, così da spiegare quali sono le differenze e le peculiarità e far meglio decidere i clienti sull’aggiornamento alla nuova versione.