Android. Anatomia di una applicazione



Documenti analoghi
Android. Intent e intent-filter. diegozabot@yahoo.it

Android. Ciclo di vita di Activity, Service e Processi

Tecniche di progettazione e sviluppo di applicazioni mobile

14/10/2015 ALESSANDRAZULLO SVILUPPO DI APPLICAZIONI ANDROID- VERSIONE 1. Alessandra Zullo

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Sistemi Mobili e Wireless Android Activity

Manuale Utente MyFastPage

Sistemi Mobili e Wireless Android Primi passi

1 2 Fase di autenticazione utente

Istruzioni per la configurazione di IziOzi

Ciclo di vita delle aevità Android Mobile Programming Prof. R. De Prisco

Programmazione Android. Luca Morettoni

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Android world. Sviluppare app per Android. Un insieme di software per dispositivi mobili (smartphone, tablet, portatili...)

Sistemi Mobili e Wireless Android - Servizi

Android. Implementare una interfaccia utente

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Guida alla registrazione on-line di un DataLogger

Guida all uso delle Web View su ios

Sistema di gestione Certificato MANUALE PER L'UTENTE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

bla bla Guard Manuale utente

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Strumenti per il testing di applicazioni in ambiente Android

POSTA ELETTRONICA Per ricevere ed inviare posta occorrono:

Usare Skype e conoscere le sue opzioni. Dopo avere installato Skype, ho fatto clic sulla sua icona

Funzioni in C. Violetta Lonati

Lifephone. Introduzione. Database. Sito

Object Oriented Programming

SCENARI. v (Maggio 2015)

GESTIONE DEI PROCESSI

Basi Android. Android si definisce open. Con8ene tecnologie open source. Il codice di Android è open. Licenza Open Source Apache 2.

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Esercizio 1: trading on-line

Archivio CD. Fondamenti di Programmazione

STAMPA DI UNA PAGINA SEMPLICE

Android. Android03: Ciclo di vita di una Activity.

Chat. Connettersi a un server di chat. Modificare le impostazioni di chat. Ricevere impostazioni chat. Chat

1. Il Client Skype for Business

7.4 Estrazione di materiale dal web

Interfaccia di base di GroupWise WebAccess

Scenari esemplificativi di utilizzo delle Mailing List

Raccolta dei Requisiti con i Casi D'uso. Corso di Ingegneria del Software Anno Accademico 2012/13

Registratori di Cassa

Corso basi di dati Installazione e gestione di PWS

Utilizzo della APP IrriframeVoice. Versione 1.0 maggio 2015

Client - Server. Client Web: il BROWSER

Presentazione servizio gestione invio ricezione sms tramite portale dedicato

La segreteria che c'è ma non si vede.

InitZero s.r.l. Via P. Calamandrei, Arezzo

Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi

Collegamento remoto vending machines by do-dots

NOME 0 PROVIDER DOMINIO istruzione.it

Soluzione dell esercizio del 2 Febbraio 2004

Configurazione di Outlook Express

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

Guida rapida Polycom SoundStation IP6000

Suite OmniTouch 8400 Instant Communications Interfaccia utente Touchtone (TUI, Touchtone User Interface)

1. Con il ricevitore agganciato, premere o un tasto linea assegnato qualsiasi. 2. Comporre il numero 3. Premere il bottone Dial

Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.

Manuale d uso. Servizio Segreteria Telefonica Memotel. per Clienti con linea Fibra

Blue s Recorder. Configurazioni di utilizzo C A P I T O L O 3

Per utilizzare il sistema VCP il programmatore deve inserire una porzione di codice di VCP nella sua applicazione.

Dichiarazione di conformità Noi dichiariamo sotto la nostra esclusiva responsabilità che il prodotto è conforme alle disposizioni della

bla bla Messenger Manuale utente

La geolocalizzazione

GESCO MOBILE per ANDROID

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

Manuale LiveBox WEB ADMIN.

COMUNICAZIONI ANOMALIE 2015 GUIDA OPERATIVA

GUIDA UTENTE MONEY TRANSFER MANAGER

Visual basic base Lezione 01. L'ambiente di sviluppo

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata.

Il calendario di Windows Vista

*AGEFor. Applicativo GEstionale per le attività Formative

GUIDA DI INSTALLAZIONE E PRIMA CONFIGURAZIONE DI EDILCONNECT PER I CONSULENTI

GUIDA AL PRONTUARIO MOBILE

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

Programmazione. Android

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

GUIDA UTENTE BILLIARDS COUNTER (Vers )

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

Progetto di Ingegneria del Software 2. SWIMv2

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

CONTENT MANAGEMENT SY STEM

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

Sequence Diagram e Collaboration Diagram

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

SIMPLY JOB. Progetto per il corso di Programmazione III e Laboratorio A.A Realizzato da: Massimo Buonocore

Artifact Centric Business Processes (I)

STUDIUM.UniCT Tutorial per gli studenti

Gestione Turni. Introduzione

Transcript:

Android Anatomia di una applicazione

Elementi di base Gli elementi di base per costruire una applicazione Android sono cinque: Activity Intent Broadcast Receiver Service Content Provider 2

Activity (1/3) Le Activity sono l'elemento di base più comune. Rappresentano blocchi logici dell'applicazione ed interagiscono con l'utente mediante i dispositivi di input dello smartphone. Serve una Activity per ogni schermata dell'applicazione (es. una per comporre un messaggio, una per consultare la rubrica e una per le configurazioni). Vengono derivate dalla classe base android.app.activity. 3

Activity (2/3) La propria Activity derivata mostrerà una interfaccia utente composta da View e risponderà ad eventi. Spostarsi da una schermata all'altra fa avviare una nuova Activity. In certi casi l'activity chiamata restituirà un valore all'activity chiamante (ad esempio una schermata che permette di selezionare una foto restituirà al chiamate la foto scelta). Quando si apre una nuova schermata, quella precedente è messa in pausa e inserita in una pila (activity stack). 4

Activity (3/3) L'utente può quindi navigare avanti e indietro tra le schermate aperte nell'activity stack. Per alcune schermate può essere inappropriato rimanere nell'activity stack, e in questo caso è possibile rimuoverle. Android mantiene un activity stack per ogni applicazione lanciata dalla schermata Home. 5

Activity - Fragment Con Android 3.0 sono stati introdotti i Fragment. Un Fragment costituisce una porzione di UI di una data Activity con le seguenti proprietà: E' caratterizzata da un proprio ciclo di vita Possiede un proprio input Può essere aggiunto e rimosso mentre l'activity è in esecuzione Per es., una Activity potrebbe includere molti Fragment quando il display è abbastanza ampio, oppure solo alcuni in caso contrario. 6

Intent 1/4 L'Intent rappresenta un messaggio in grado di attivare i tre componenti-base di una applicazione: Activity, Service e Broadcast Receiver Un Intent descrive cosa una applicazione vuole che venga fatto. La struttura dati dell'intent si compone dell'azione da effettuare e dei dati su cui agire. Valori tipici per l'azione sono MAIN (la schermata principale dell'applicazione), VIEW, PICK, EDIT etc. 7

Intent 2/4 Un Intent può essere Esplicito o Implicito: Esplicito: all'interno del costruttore dell'intent specifichiamo la classe da eseguire (tipicamente una Activity). Nell'esempio seguente è istanziato un Intent in cui è dichiarata una Activity da eseguire. Intent intent = new Intent(this, SubActivity.class); startactivity(intent); 8

Intent 3/4 Implicito: rappresenta l'essenza della filosofia Android. Un Intent implicito dichiarata l'azione da eseguire pur senza sapere chi la eseguirà. Nel seguente esempio è dichiarato un Intent mediante cui avviare una Activity che visualizzerà il sito definito nell'uri Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Intent.ACTION_VIEW,uri); startactivity(it); 9

Intent 4/4 In generale, potrebbe essere necessario richiedere specifici permission per eseguire un particolare Intent Tali permessi devono essere dichiarati nel manifest.xml, ad esempio: <uses-permission android:name="android.permission.internet" /> 10

IntentFilter 1/2 Una classe correlata si chiama IntentFilter. Una Activity che è in grado di mostrare le informazioni di contatto per una persona pubblicherà un IntentFilter nel quale dirà che sa come gestire l'azione VIEW quando essa è applicata a dati che rappresentano una persona. Le Activity pubblicano i loro IntentFilter nel file AndroidManifest.xml. La navigazione da una schermata all'altra viene effettuata risolvendo gli Intent. 11

IntentFilter Un IntentFilter sempre presente nella nostra applicazione è il seguente: <activity android:name=".intentsample" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> La action dichiara che si tratta di un entry point, mentre la category indica che questo entry point può essere listato nell'application Launcher Ovvero, la nostra Activity si rende disponibile nella home per essere eseguita mediante click/tap sull'icona relativa 12

Intent - Navigazione Per navigare avanti una Activity chiama startactivity(myintent); Il sistema guarda quindi gli IntentFilter per tutte le applicazioni installate e sceglie l'activity il cui IntentFilter è più appropriato per myintent. La nuova Activity è informata dell'intent, e viene quindi lanciata. 13

Intent - Esecuzione a run-time Il fatto di risolvere gli Intent al tempo di esecuzione solo quando startactivity() viene chiamata comporta almeno due benefici principali: Le Activity possono riutilizzare funzionalità di altri componenti semplicemente facendo una richiesta sotto forma di un Intent. Le Activity possono essere sostituite in ogni momento da una nuova Activity con un IntentFilter equivalente. Rif: http://developer.android.com/reference/android/ content/intent.html 14

BroadcastReceiver 1/2 Il secondo elemento di base di una applicazione è la classe BroadcastReceiver definita all'interno del package android.content. Viene utilizzato quando si vuole che parte del codice della propria applicazione venga eseguito in risposta ad un evento esterno (es. il telefono squilla, o una connessione dati diventa disponibile, oppure quando è mezzanotte). Affinché un BroadcastReceiver venga chiamato non è necessario che la relativa applicazione sia in esecuzione. 15

BroadcastReceiver 2/2 I BroadcastReceiver non hanno interfaccia grafica, ma possono usare il NotificationManager per avvisare l'utente che è successo qualcosa di interessante. Anche i BroadcastReceiver come gli IntentFilter sono registrati nel file AndroidManifest.xml, ma possono essere anche registrati dal sorgente usando la chiamata Context.registerReceiver(). Le applicazioni possono lanciare i broadcast alle altre con Context.sendBroadcast(). 16

PendingIntent 1/2 Un PendingIntent è un oggetto che contiene un Intent di un azione da effetturare con esso Passando un PendingIntent ad un'altra application, le garantiamo il permesso di eseguire l'operazione che abbiamo stabiito come se l'altra applicazione fosse proprio la nostra applicazione 17

Pending Intent 2/2 Le istanze di questa classe sono create con : getactivity(context, int, Intent, int) :consente al componente che riceve tale pending intent di lanciare una nuova activity tramite Context.startActivity(Intent). getbroadcast(context, int, Intent, int): consente al componente che riceve tale pending intent di inviare un annuncio broadcast tramite Context.sendBroadcast(Intent). getservice(context, int, Intent, int): consente al componente che riceve tale pending intent di avviare un nuono service tramitecontext.startservice(inten 18

Service Un altro elemento di base delle applicazioni Android è il Service, ovvero del codice senza interfaccia grafica e sono definiti all'interno del package android.app. Un buon esempio è la riproduzione di un brano musicale: poiché si vuole che la riproduzione continui anche dopo che l'utente ha cambiato schermata, non la si può lasciare eseguire ad una Activity ma bisogna chiamare Context.startService() per eseguirla in background. 19

Cosa non è un service Un Service non è un processo separato: in altre parole l'applicazione e il suo servizio sono eseguiti all'interno dello stesso processo (se non altrimenti specificato) Non è un thread: non è uno strumento mediante cui fare eseguire delle attività al di fuori del thread principale 20

Cosa è un service Un Service è uno strumento mediante cui l'applicazione vuol comunicare al sistema che una data operazione deve essere eseguita in background anche quando l'utente non sta interagendo direttamente con essa. Uno strumento mediante il quale l'applicazione mette a disposizione di altre applicazioni alcune delle proprie funzionalità. Ciò può essere realizzato invocando una Context.bindService() mediante la quale viene stabilita una connessione tra l'applicazione richiedente ed il servizio richiesto. 21

Content Provider L'ultimo elemento di base è il Content Provider, definito all'interno della classe Android.Content Solitamente le applicazioni memorizzano i loro dati all'interno del file-system oppure in un database SQLite, ma se i dati di una applicazione devono essere condivisi con le altre bisogna usare la classe ContentProvider. Un ContentProvider è una classe che implementa un insieme standard di metodi per permettere alle altre applicazioni di salvare e recuperare dati. 22

Conclusioni In questa lezione abbiamo visto brevemente le quattro classi alla base di ogni applicazione Android: Activity, Intent, BroadcastReceiver, Service e ContentProvider. 23