Considerazioni sulla progettazione di applicazioni per dispositivi mobili

Il contesto operativo e le caratteristiche fisiche dei dispositivi mobili impongono un'estrema cura nelle fasi di scrittura del codice e progettazione. Ad esempio, è fondamentale ottimizzare il codice per garantire la massima velocità di esecuzione. L'ottimizzazione del codice può arrivare fino a un certo punto, ovviamente; una progettazione intelligente che si adatta ai limiti del dispositivo può anche aiutare a evitare di sottoporre il sistema di rendering a un carico di lavoro eccessivo.

Codice

Velocizzare l'esecuzione del codice è sempre positivo, ovviamente, e la più lenta velocità del processore della maggior parte dei dispositivi mobili rende più gratificante il tempo e l'impegno dedicati alla scrittura di un codice "snello". Inoltre, i dispositivi mobili funzionano quasi sempre a batteria. Ottenere lo stesso risultato con meno lavoro permette di consumare meno carica della batteria.

Progettazione

Fattori come le dimensioni ridotte dello schermo, l'interazione tramite touch screen e anche l'ambiente in costante cambiamento dell'utente di un dispositivo mobile devono essere presi in debita considerazione quando si progetta la user experience dell'applicazione.

Codice e progettazione in combinazione

Se l'applicazione usa l'animazione, l'ottimizzazione del rendering è molto importante. Tuttavia, l'ottimizzazione del codice da sola spesso non basta. Dovete progettare gli aspetti visuali dell'applicazione in maniera tale che il codice possa eseguirne il rendering in modo efficiente.

Importanti tecniche di ottimizzazione sono trattate nella guida Ottimizzazione delle prestazioni per la piattaforma Adobe Flash . Le tecniche descritte nella guida valgono per i contenuti Flash e AIR di qualsiasi tipo, ma sono essenziali per lo sviluppo di applicazioni che funzionino bene sui dispositivi mobili.

Ciclo di vita dell'applicazione

Quando l'applicazione perde lo stato di attivazione in favore di un'altra applicazione, AIR riduce la frequenza dei fotogrammi a 4 fotogrammi al secondo e cessa di eseguire il rendering della grafica. Al di sotto di questa frequenza, lo streaming di rete e le connessioni socket tendono a interrompersi. Se l'applicazione non fa uso di tali connessioni, potete ridurre la frequenza dei fotogrammi anche a un valore inferiore.

Quando è appropriato, interrompete la riproduzione audio e rimuovete i listener dei sensori di localizzazione geografica (geolocation) e accelerometro (accelerometer). L'oggetto AIR NativeApplication invia gli eventi di attivazione (activate) e disattivazione (deactivate). Usate questi eventi per gestire la transizione tra lo stato attivo e lo stato di background.

La maggior parte dei sistemi operativi per dispositivi mobili chiude le applicazioni in background senza avvisare l'utente. Se lo stato dell'applicazione viene salvato frequentemente, dovrebbe essere possibile ripristinare l'applicazione a uno stato di funzionalità sia che venga riportata allo stato di attività dal background o venga avviata di nuovo.

Densità di informazione

Le dimensioni fisiche dello schermo dei dispositivi mobili sono inferiori a quelle del desktop, sebbene la densità dei pixel (pixel per pollice) sia maggiore. La stessa dimensione carattere produce lettere fisicamente più piccole sullo schermo di un dispositivo mobile rispetto a un computer desktop. Spesso occorre adottare un carattere più grande per garantire la leggibilità. In generale, la dimensione di 14 punti è la più piccola che risulti facilmente leggibile.

I dispositivi mobili sono spesso utilizzati durante gli spostamenti e in condizioni di scarsa illuminazione. Considerate la quantità di informazioni che è possibile visualizzare realisticamente sullo schermo in maniera leggibile. Potrebbe essere inferiore a quella visualizzata su uno schermo desktop avente le stesse dimensioni in pixel.

Valutate anche che quando un utente tocca lo schermo, il dito e la mano occludono alla vista parte del display. Inserite gli elementi interattivi ai lati e in fondo allo schermo quando l'utente deve interagire con essi per un intervallo di tempo più lungo rispetto a un singolo tocco istantaneo.

Immissione del testo

Molti dispositivi usano una tastiera virtuale per l'immissione del testo. Le tastiere virtuali oscurano parte dello schermo e spesso non sono facilissime da usare. Evitate di fare un uso eccessivo degli eventi da tastiera (tranne che per i tasti virtuali)

Valutate la possibilità di implementare delle alternative all'utilizzo dei campi di testo di input. Ad esempio, per fare in modo che l'utente immetta un valore numerico, non è necessario un campo di testo. Potete fornire due pulsanti per aumentare o diminuire il valore.

Tasti virtuali

I dispositivi mobili includono un numero variabile di tasti virtuali. I tasti virtuali sono pulsanti programmabili con svariate funzioni. Seguite le convenzioni della piattaforma specifica per adottare questi tasti nella vostra applicazione.

Modifica dell'orientamento dello schermo

Il contenuto destinato ai dispositivi mobili può essere visualizzato con orientamento verticale o orizzontale. Valutate il modo in cui l'applicazione reagisce alle variazioni dell'orientamento dello schermo. Per maggiori informazioni, consultate Orientamento dello stage .

Oscuramento dello schermo

AIR non disabilita automaticamente l'oscuramento dello schermo durante la riproduzione di un video. Potete usare la proprietà systemIdleMode dell'oggetto AIR NativeApplication per controllare l'attivazione o meno della modalità di risparmio energetico del dispositivo. (Su alcune piattaforme, è necessario richiedere le autorizzazioni appropriate per poter utilizzare questa funzione.)

Chiamate telefoniche in arrivo

Il runtime AIR disattiva automaticamente l'audio quando l'utente esegue o riceve una chiamata telefonica. Su Android, dovete impostare l'autorizzazione Android READ_PHONE_STATE nel descrittore dell'applicazione se l'applicazione riproduce l'audio mentre è in background. In caso contrario, Android impedisce al runtime di rilevare le chiamate in arrivo e di disattivare automaticamente l'audio. Vedete Autorizzazioni Android .

Destinazioni di tocco

Valutate le dimensioni delle destinazioni di tocco durante la progettazione di pulsanti e altri elementi dell'interfaccia utente che vengono toccati dall'utente. Si consiglia di rendere questi elementi sufficientemente larghi da poter essere comodamente attivati con un dito su uno schermo sensibile. Inoltre, accertarsi che lo spazio tra le destinazioni sia sufficiente. L'area "target" del tocco deve essere di circa 44 x 57 pixel su ciascun lato, nel caso di un display telefonico tipico con valore dpi elevato.

Dimensioni del pacchetto di installazione dell'applicazione

I dispositivi mobili solitamente hanno una quantità di memoria molto inferiore ai computer desktop per l'installazione delle applicazioni e l'archiviazione dei dati. Riducete le dimensioni del pacchetto rimuovendo le risorse e le librerie inutilizzate.

Su Android, il pacchetto dell'applicazione non viene estratto in un file separato quando un'applicazione viene installata. Al contrario, le risorse vengono decompresse in un'area di memoria temporanea nel momento in cui vengono utilizzate. Per ridurre al minimo lo spazio occupato in memoria da queste risorse decompresse, chiudete i flussi dati di file e URL quando le risorse sono state completamente caricate.

Accesso al file system

I diversi sistemi operativi per dispositivi mobili impongono restrizioni differenti sul file system e tali restrizioni tendono anche a differenziarsi da quelle previste nei sistemi operativi desktop. La posizione corretta per collocare e salvare file e dati può, di conseguenza, variare da una piattaforma all'altra.

Una delle conseguenze dell'uso di file system differenti consiste nel fatto che le scorciatoie alla directory più comune fornite dalla classe File di AIR non sono sempre disponibili. La tabella seguente mostra le scorciatoie che possono essere utilizzate in Android e iOS:

Android

iOS

File.applicationDirectory

Sola lettura tramite URL (non percorso nativo)

Sola lettura

File.applicationStorageDirectory

Disponibile

Disponibile

File.cacheDirectory

Disponibile

Disponibile

File.desktopDirectory

Root scheda SD

Non disponibile

File.documentsDirectory

Root scheda SD

Disponibile

File.userDirectory

Root scheda SD

Non disponibile

File.createTempDirectory()

Disponibile

Disponibile

File.createTempFile()

Disponibile

Disponibile

Le linee guida Apple per le applicazioni iOS forniscono regole specifiche su quali posizioni di archiviazione utilizzare per i file in diversi casi. Ad esempio, una linea guida indica che solo i file che contengono i dati immessi dall'utente o i dati che non possono essere rigenerati o riscaricati dovrebbero essere archiviati in una directory specifica per il backup remoto. Per informazioni su come rispettare le linee guida Apple per il backup e la memorizzazione nella cache del file, consultate Controllo del backup dei file e memorizzazione nella cache .

Componenti dell'interfaccia utente

Adobe ha sviluppato una versione del framework Flex ottimizzata per i dispositivi mobili. Per maggiori informazioni, consultate l'articolo Developing Mobile Applications with Flex and Flash Builder .

Sono anche disponibili progetti di componenti per applicazioni mobili proposti dalla comunità degli utenti. Ad esempio:

Rendering con grafica accelerata Stage3D

A partire da AIR 3.2, AIR per dispositivi mobili supporta il rendering con grafica accelerata Stage 3D. Le API ActionScript Stage3D sono una serie di API di basso livello con accelerazione grafica che abilitano funzionalità 2D e 3D avanzate. Queste API di basso livello danno agli sviluppatori la flessibilità necessaria per sfruttare l'accelerazione hardware tramite GPU al fine di ottenere sensibili miglioramenti delle prestazioni. Potete anche usare motori di gaming che supportano le API ActionScript Stage3D.

Per ulteriori informazioni, vedete Gaming engines, 3D, and Stage 3D (Motori di gaming, 3D e Stage3D).

Smoothing video

Per migliorare le prestazioni, l'opzione di smoothing video è disattivata su AIR.

Funzioni native

Molte piattaforme mobili forniscono funzioni che non sono ancora accessibili tramite l'API standard di AIR. A partire da AIR 3, potete estendere AIR con le vostre librerie di codice. Queste librerie di estensione native possono accedere alle funzioni disponibili nel sistema operativo così come alle funzioni specifiche di un determinato dispositivo. Le estensioni native possono essere scritte in C per iOS e in Java o C per Android. Per informazioni sullo sviluppo delle estensioni native, vedete Introducing native extensions for Adobe AIR (Introduzione alle estensioni native per Adobe AIR).