Le 3 risorse d’oro in sistemi mobile

Molte applicazioni sviluppate per smartphones hanno come requisito la connettività verso internet.

Sebbene in questo blog sia già stato trattato, seppur marginalmente, la disponibilità di una connessione verso internet del cellulare, non è sempre sufficiente affidarsi a questo tipo di controlli.

Chi programma per sistemo mobile saprà che le risorse da trattare come l’oro sono (in ordine di importanza):

  1. La Batteria
  2. La memoria
  3. L’immediatezza
Vediamoli bene in dettaglio…
La Batteria

La batteria è senza ombra di dubbio la risorsa da preservare con maggior cura. I cellulari moderni sono tanto potenti quanto esigenti di risorse energetiche tanto da esaurire spesso una carica completa in meno id 24 ore.

Costruire applicazioni che “rispettino” la batteria è un dovere di ogni bravo sviluppatore.

Alcuni esempi di preservazione della batteria potrebbero prevedere:

  • Sincronizzazione lato web solamente nelle ore diurne
  • Sincronizzazione lato web solo se la batteria è al di sopra di una certa percentuale
  • Sincronizzazione lato web solamente quando il cellulare non è in standby da più di un tot di tempo
  • Sincronizzare solamente quando la chiamata a ConnectivityManager.getBackgroundDataSetting() ritorna true
Questi piccoli 3 esempi sopra elencati sono totalmente implementabili sotto android e in alcuni casi possono ridurre il consumo della batteria (da parte della propria applicazione) anche del 90%.

Che cosa succede se non si è batteria-friendly ?

Se la nostra applicazione prevede un uso intensivo di internet gli utenti più smaliziati potrebbero lamentarsi sul market e lasciare commenti molto negativi ( fin troppo negativi ) sulle nostre apps.

La memoria

La memoria è senza dubbio la seconda risorsa più importante da preservare. Nell’ecosistema android esistono cellulari con molta o poca memoria disponibile.

La gestione della memoria sotto Android  è molto complessa e articolata  e molte volte lo sviluppatore non deve nemmeno preoccuparsi di quanta memoria stia utilizzando.

Ci sono tuttavia alcune cose che è meglio evitare come ad esempio:

Creare classi che nel costruttore accettano un parametro di tipo Context e ne salvino la copia in un proprio field interno. Qual’ora si debbano creare molte istanze di quest’ipotetica classe si andrebbe incontro ad uno spreco enorme di memoria.

E’ molto meglio non tenere copia del context oppure effettuare una copia ma solamente in un field statico.

Cosa succede se non si è Memoria-friendly ?

Ci sono fin troppi utenti smaliziati che fanno uso, sbagliando, di task managers. Questi utenti, pur possedendo cellulari di fascia altissima, sono dei conservatori estremi della propria memoria e per tale motivo si lamenteranno inesorabilmente di un utilizzo improprio, a loro dire, della memoria da parte delle vostre applicazioni.

Per questo motivo è necessario, per evitare commenti negativi, controllare la memoria utilizzata dalla propria applicazione nell’arco del tempo.

L’immediatezza

Diciamo la verità: nessuno vuole aspettare!

Moltissimi studi di usabilità marcano la latenza come acerrimo nemico della fruizione dei contenuti. E’ ampiamente dimostrato che gli utenti sono sempre più esigenti in termini di velocità e per questo un sito/applicazione lenta è molto più incline ad essere disinstallata.

Per essere più attenti a questa risorsa bisogna evitare i punti di loading, ad esempio:  se la vostra applicazione ha molte situazioni dove viene mostrato un ProgressDialog la soluzione migliore sarebbe quello di dare una notifica immediata di avvenuta operazione ed eventualmente notificare il fallimento successivamente.

Cosa succese se non si è Immediatezza-friendly?

E’ molto difficile che qualche utente si lamenti del fatto che un applicazione non sia immediata.  Tuttavia se la vostra applicazione è molto lenta state pur certi che riceverete commenti negativi ( ma in quel caso non avrete sicuramente un problema di immediatezza ).

Conclusioni

Le 3 risorse d’oro come abbiamo visto sono batteria,memoria e immediatezza. Tuttavia il 99% delle applicazioni non sono sviluppate “correttamente” e comunque molte di queste sono ottime applicazioni.

Alcune applicazioni potrebbero addirittura, per natura, essere già ottimizzate per non consumare batteria o avere una ottima gestione della memoria.

Queste 3 risorse però giocano il 90% della differenza che divide un’applicazione di buon livello da una di ottimo livello.

Voi che ne pensate ? Avete altre risorse o cose che secondo voi sono importantissime tenere a mente durante lo sviluppo di un applicazione?