Google Android

Da Skypedia.
Il robottino Android
Android è una piattaforma software per cellulari e netbook ultima generazione e ha come kernel Linux 2.6. Le applicazioni scritte con l’immagine SDK sono a tutti gli effetti programmate in Java, anche se sono messe a disposizione dello sviluppatore un insieme di librerie C/C++ per la gestione del sistema, dei media e del database SQLite. Le applicazioni Android girano su una Virtual Machine come ogni altro programma Java, anche se questa VM non è quella standard sviluppata da Sun ma è una versione personalizzata che si chiama Dalvik VM.

Le applicazioni Android scritte in codice Java vengono compilate e pacchettizzate, con ogni file necessario per il funzionamento dell’applicazione, in un package Android, un file di estensione .apk. Questo è praticamente il veicolo di distribuzione di qualsiasi applicazione Android e può essere direttamente installato in qualsiasi sistema mobile con questo sistema operativo.

Ogni applicazione per Android vive nel suo mondo

  • ogni programma, di default, crea un fork con un processo Linux a se stante. Il sistema fa partire il processo quando l’applicazione ha bisogno di essere eseguita ed effettua un kill quando non è più necessaria (se le risorse di sistema sono richieste da un altro processo). Tutto ciò è analogo a quanto accade con un Garbage Collector, anche se in questo caso le risorse del sistema sono più stringenti e il killing dei processi non più utili è di fondamentale importanza.
  • Ogni processo ha comunque una propria Java virtual machine, così ogni applicativo vive nel suo spazio isolato e non intacca il funzionamento del resto del software. Non vi dovrete preoccupare di sbagliare con Android.
  • Di default ogni applicazione ha un unico Linux user ID. I permessi sono settati in modo tale per cui i file dell’applicativo saranno visibili solo da quell’utente, solo da quella stessa applicazione – anche se è sempre possibile esportarli verso altre applicazioni facilmente.

Dalvik Virtual Machine

Questa VM é in grado si eseguire file in formato “*.dex”, un formato ottimizzato per l’esecuzione in memoria creato dall'sdk di Android. Basata sul registro, è in grado di eseguire classi compilate da java e trasformate nel linguaggio nativo dal tool “dx”. 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. Tutto ciò per consentire un'elevata robustezza del sistema e per evitare possibili crash nell'esecuzione. Quando un utente apre diversi programmi Android provvede a "saltare" da un programma ad un altro e a cancellare i programmi non più necessari salvandone lo stato.

DalvikVM vs 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.

Dalvik usa la libreria open source Java Apache Harmony, una libreria completamente indipendente per Java 5 SE.

Il nome Dalvik deriva dal villaggio di pescatori Dalvíkurbyggð di cui la famiglia dello sviluppatore (Dan Bornstein) è originaria.

Anatomia di un'applicazione Android

Logo Android
Ogni applicazione Android può essere composta dai seguenti elementi:
  • Activity
  • Intent receiver
  • Service
  • Content provider

Ogni Activity può essere generalmente identificata come una singola schermata in un'applicazione. Lo sviluppatore estenderà la classe base Activity per implementare ogni schermata dell'applicazione. In pratica verranno istanziate diverse classi di Activity per un'applicazione e ognuna di esse sarà formata da Views che risponderanno a determinati eventi. Android terrà traccia di una cronologia delle Activity istanziate e si potrà così navigare attraverso queste ultime. Le activities costituiscono le viste in un pattern MVC.

L'Intent Receiver è una speciale classe che si occupa di far proseguire l'applicazione da activity ad activity. Ad ogni IR si specifica l'azione da compiere e il dato su cui eseguirla (sotto forma di URI- Uniform Resource Indicator). Un Intent Receiver non fa altro che stare in ascolto per un determinato evento che lo attiva.

Un Service è praticamente un demone che esegue delle operazione in background. Ovviamente è un processo che eseguirà senza richiamare una UI.

Il Content Provider è un componente che permette all'utente di scambiare informazioni con applicazioni e processi. In questo tipo di classe ci saranno tutti i metodi utili al salvataggio dell'informazione in un database basato su file (SQLite).

Android User Interfaces

Views e Viewgroups
Un'applicazione Android che abbia una qualche Activity dovrà comparire a video tramite una UI che sarà specificata in due modi:
  • definendo un codice XML
  • tramite lo stesso Java

Si preferisce comunque dividere la visualizzazione dalla logica computazionale e scrivere le interfacce grafiche tramite XML, definendole in maniera comunque facile tramite dei tool di creazione grafici. Le UI sono costruite tramite views (android.view.View) e viewgroups (android.view.View). Un view è del tutto simile ad un Jframe e un viewgroup serve a raggruppare le varie viste di un'applicazione.

Android Manifest

Nella cartella radice di ogni applicazione Android dovrà esserci un file descrittivo dell'applicazione stessa chiamato AndroidManifest.xml. Esso conterrà i parametri globali dell'applicazione e i componenti come le Activities, i Services e tutto ciò che componga il programma da eseguire.

Le Risorse

L'accesso alle risorse ( i files su cui operare) viene subordinato all'utilizzo di una classe base chiamata R. In pratica si accede alla risosa richiamandola come attributo di R in questo modo: android.R.tipoRisorsa.nomeRisorsa.

Android provvederà alla creazione di un file delle risorse da compilare chiamato R.java.

Creare un'applicazione Android

Quando si creerà un'applicazione Android si estenderà la classe base Activity facendo l'override dei metodi base per il funzionamento del programma:

  • onCreate()
  • onPause()
  • onDestroy()


Ciclo di vita di un'applicazione Android

Collegamenti esterni