Sviluppare in Android- Prima parte

Questa serie di articoli, hanno l’obiettivo di far comprendere all’utente come sviluppare su dispositivi Android, si partirà con l’analizzare passo per passo una semplice applicazione d’esempio fornita con l’SDK di Android.

Lunar Lander

Activity

Questo applicativo presenta una sola schermata, una schermata in Android viene gestita tramite una classe Java che estende la classe Activity, nel nostro caso d’esempio questa classe è LunarLander.java

Menu
Questa applicazione come abbiamo detto presenta un unica schermata(Activity), nell’immagine vediamo che è presente un menu principale tramite il quale è possibile scegliere una serie di opzioni legate al gioco.
Vediamo di seguito il codice necessario per la costruzione del menu.

Per creare il menu é necessario ridefinire il metodo della classe estesa(Activity), il metodo da ridefinire è il metodo onCreateOptionMenu

Nell’immagine notiamo che sono definite delle costanti che rappresentano le varie voci di menu, queste costanti di tipo int presentano una numerazione progressiva.

Nella Classe LunarLander, viene ridefinito il metodo onCreateOptionMenu, metodo necessario per la definizione del menu.

Il metodo add sulla Classe Menu, consente di aggiungere una voce al menu, come si vede dall’immagine d’esempio il metodo accetta quattro parametri in ingresso:

groupID: identificativo di gruppo
itemID: numero univoco dell’item(Vedi costanti definite sopra)
order: ordinamento
title : titolo

Una particolare nota va posta sul titolo e su come questo viene recuperato. Come notiamo il titolo viene recuperato da una classe particolare, la classe R, questa classe è una classe “speciale” in quanto consente di ottenere un riferimento alle risorse del progetto: Testo, immagini, suoni ecc.

Le risorse

Le risorse sono file esterni che sono usati dal codice e compilate nell’applicazione nella fase di build.

Android supporta diversi file di risorse XML, PNG e JPG. I file XML sono di diversi formati in base a cosa intendono descrivere

Queste risorse sono contenuto tutte nella directory Res.

Quando modifichiamo un file contenuto in queste gruppo di directory, la classe R viene aggiornata creando in essa dei riferimenti alle risorse definite, nel caso in cui si utilizza il plugin fornito con Eclipse questo aggiornamento avviene in maniera automatica ad ogni cambiamento delle risorse.

Per utilizzare la risorsa, bisogna conoscere il “full resource ID”.

R.resource_type.resource_name

resource_type : è la sottoclasse di R che detiene la risorsa specifica(string nel caso dei titoli)

resource_name: è il nome dell’attributo della risorsa definita nel file xml, o il nome del file per altri tipi di risorse.

Share/Save/Bookmark

Android Mobile Source Code

Ieri 21 ottobre è stata rilasciata finalmente la versione opensource di Android Mobile (http://source.android.com).

Il rilascio del codice sorgente di Android OS apre la strada per un suo rapido sviluppo nonché ad una sua rapida adozione da player anche di non di primissimo piano nel mondo dell’high tech.

Oggi  22 ottobre  i primi consumatori statunitensi stanno ricevendo il primo dispositivo mobile basato su SO Android(HTC G1), il 30 di questo mese è previsto invece il rilascio per il mercato inglese.

Share/Save/Bookmark

Dalvik Virtual Machine

Dalvik è il nome della virtual machine(VM) di Android.
Questa VM é in grado si eseguire file in formato “*.dex”, un formato ottimizzato per l’esecuzione in memoria,
questa VM basata sul registro è in grado di eseguire classi compilate da java e trasformate nel linguaggio
nativo dal tool “dx” fornito con Android SDK.
La VM viene eseguita su un sistema operativo basato sul kernel linux 2.6.
DalvikVm è ottimizzata per essere eseguita in istanze multiple e si caratterizza per un utilizzo ottimizzato
della memoria e per l’isolamento tra le diverse istanze di VM, queste, infatti, risultano protette da eventuali
crash di altre applicazioni.

Differenze rispetto alla javaVM
JavaVM è una virtual machine basata sullo Stack, mentre DarvikVM è basata sui registri, questa differente modalità
operativa è dettata in particolare dalla natura dei processori per dispositivi mobili, questi sono progettati ed
ottimizzati per eseguire le istruzioni basate sui registri. L’esecuzione per registri consente di eseguire il codice
 piu’ velocemente a scapito della dimensione del codice compilato.

StackBased vs Registry Based

Ipotizziamo di dover eseguire la seguenti operazioni e vediamo i vari passi eseguiti dalla VM nelle due condizioni:

c = a + b
d = a + 4;
e = b * 3;

StackBased
push ‘a’
getvar
push b’
getvar
add
push ‘c’
storevar
push ‘a’
getvar
push 4
add
push ‘d’
storevar
push ‘b’
getvar
push 3
multiply
push ‘e’
storevar

Totale : 19 operazioni, 9 parameters.

RegistryBased
getvar R1, “a”
getvar R2, “b”
getvar R3, “c”
getvar R4, “d”
getvar R5, “e”
add R3, R1, R2
add R4, R1, 4
mul R5, R2, 3

8 operazioni, 19 parametri

Per maggiori info: http://www.sidhe.org/~dan/blog/archives/000189.html

Share/Save/Bookmark