Il sistema operativo Android

Documenti analoghi
Sistemi Mobili e Wireless Android - Intent

Introduzione alla programmazione Android. Emanuel Di Nardo

Android. Anatomia di una applicazione

Sistemi Mobili e Wireless Android Activity

Android. Project, Activity, Layout e Toast

Programmazione. Android

SISTEMI OPERATIVI ANDROID

Android. Ciclo di vita di Activity, Service e Processi

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

Laboratorio di Reti, Corsi A e B. Text-Twist. Progetto di Fine Corso A.A. 2016/17

@ ITT M. BUONARROTI, TRENTO ANDROID DEVELOPMENT ELEMENTI BASE. RAMAN KAZHAMIAKIN OSCAR GIOVANNI DE

Introduzione ad Android. Lucidi del corso di Programmazione III A.A. 2015/16

Close To Me manuale d'uso. 1. Introduzione.

WebDisk. TeamPortal - WebDisk

Android. Android03: Ciclo di vita di una Activity.

Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android

Riferimento rapido dell'applicazione Novell Filr 2.0 Web

14Ex-Cap11.qxd :20 Pagina Le macro

Mobile Programming. Prova scritta del 07/04/2016. Prof. De Prisco. Corso di laurea in Informatica

Guida i-help App. IOS

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Portale ING Commercial Card. Scheda di guida rapida del titolare della carta

Manuale NoiPA. Modifica Dati Personali

Come aggiornare il firmware sulle stampanti largo formato

Dell Canvas Palettes. Guida dell'utente

Portale di gestione Version 7.5

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

Raccolta e memorizzazione dei dati immessi nei moduli dai visitatori

Access 2007 Colonna di ricerca

Eni S.p.A. Eni ICT. CA Strong Authentication Manuale Utente. CA Strong Authentication User Manual

Componenti di un sistema operativo

Open Database Connectivity (ODBC)

ACCESSO AL PORTALE INTERNET GSE

Android. Intent, ListView e Adapter. Corso di programmazione di sistemi mobile 1

BCM. IP Phone 2001 Nortel Networks Guida per l'utente

Lab 1: Java Multithreading

Per accedere alla funzione Interroga pagamenti di Bristol Myers- Squibb, avviare il browser di Internet normalmente utilizzato.

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Il significato di (quasi) tutte le icone dei nuovi Lumia

Guida all accesso per gli ospiti

Windows. La prima realizzazione di un ambiente grafico si deve alla Apple (1984) per il suo Macintosh. La gestione dei file conserva la logica del DOS

Fiat Group Purchasing Supplier Quality SQP Manuale Utente Versione 1, Novembre 2008

IL MIGLIORE AMICO DEL CAMERIERE

Uso del pannello operatore

SISTEMA GESTIONE TOMBINI

Services. Servizi. Componen8 che avviano operazioni in background. Specializzazioni della classe Context

Configurazione degli Avvisi di Sistema. Mike McBride Traduzione del documento: Samuele Kaplun Traduzione e revisione del documento: Luigi Toscano

Mobile Programming. Prova scritta del 10/02/2017. Prof. De Prisco. Corso di laurea in Informatica

Funzioni Principali dell APP ENTR

GENERA AMBIENTE MANUALE PER L'UTENTE

Il problema dello I/O e gli Interrupt. Appunti di Sistemi per la cl. 4 sez. D A cura del prof. Ing. Mario Catalano

La Back Office Console consente di costruire lo scheletro degli schema.

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Documento di Analisi. Mockup

Esecuzione di chiamate vocali Esecuzione di una chiamata vocale utilizzando la tastiera 1.

IP150 (cod. PXDIP15)

Portale fornitori di Coni Servizi S.p.A.

a) Strumento TOSHIBA HDD Recovery

OT Message Center per smartphone Android

Business Communications Manager Telefono Internet i2002 Scheda per l'utente

UNIVERSITA CA FOSCARI VENEZIA - CT0090 INGEGNERIA DEL SOFTWARE 2016/2017 ARRIFORNISCETE. Documento di Analisi e Specifica 1.

AREAS Accessi. Sistema Prenotazione Cittadino

Lettura da tastiera e scrittura su monitor

Cosa sono i report. Prof. Emanuele Papotto 05/10/2010

Guida Google Cloud Print

WINKHOUSE Tutorial 7 Prospettiva Agenda

Indice generale. Prefazione...xiii. Introduzione...xv. Android e Java per Android...1

Guida per l utilizzo della WEB COMMUNITY

Business Communications Manager Telefono Internet i2004 Scheda per l'utente

Capitolo 2: Strutture dei sistemi di calcolo

ACCESSO AL PORTALE INTERNET GSE

INTEGRAZIONE CON COMUNICA STARWEB

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D.

Valutazione del personale

MANUALE UTENTE SERVIZIO. Metel CloudEDI. Attivazione relazioni

AiM Manuale Utente. Race Studio 3 Track Manager. Versione 1.00

Scheda delle funzioni SWCA (System-wide Call Appearance)

Manuale NoiPA. Guida all accesso del Portale NoiPA

Utilizzo di Fiery WebSpooler

Questo materiale è reperibile a questo indirizzo: PAS

Strumenti per il testing di applicazioni in ambiente Android

Cosa sono le maschere

PREMESSA... 3 ENTE 1.1 PERIODI... 5 ENTE 2.1 MISURAZIONI... 7 ENTE 3.1 GESTIONE STATI ENTE 4.1 REPORTISTICA... 22

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Guida rapida Supercordless

Stampa unione II: Utilizzare la barra multifunzione ed eseguire una stampa unione avanzata

Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette

Symantec IT Management Suite 8.0 powered by Altiris technology

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Sistemi Operativi. La gestione delle risorse

Architettura Applicativa

Funzioni, Stack e Visibilità delle Variabili in C

Riproduzione multimediale in Windows Phone. Brando Mordenti Matricola

Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via

Guida rapida. Versione 9.0. Moving expertise - not people

Plantview Usernames

Direzione Didattica e Servizi agli Studenti. Centro Linguistico e Risorse Digitali per la Didattica DIDATTICA ONLINE IL FORUM

ITIS Morosini apunti sulle GoogleApps APPUNTI SU

Telefono analogico Guida per l'utente. N. parte P febbraio 2004

Procedura aggiornamento firmware

Transcript:

Il sistema operativo Android Application Lifecycle Letture consigliate: Il sistema operativo Android http://www-ictserv.poliba.it/piscitelli/doc/lucidiso_eltlc_270/il%20sistema%20operativo%20android.pdf A.A. 2016-2017 1

Introduzione Un applicazione consiste di uno o più componenti che sono definiti all interno del file manifest.xml dell applicazione Ogni componente è un entry point per sistema e utenti Un componente può essere uno tra: Una Activity Un Service Un Broadcast Receiver Un Content Provider Ogni tipo di componente è associato ad uno scopo distinto e ha un proprio ciclo di vita (lifecycle) che definisce come viene creato e distrutto A.A. 2016-2017 2

Activity Una Activity rappresenta una singola schermata di una applicazione interattiva (user entry point) tramite cui possono essere realizzate differenti azioni Una applicazione può avere diverse Activity Anche se le Activity collaborano tra loro per formare una interfaccia utente unica ed un esperienza coesa, ogni Activity è indipendente dalle altre Tipicamente una delle Activity è segnalata come la prima che deve essere mostrata all utente quando l applicazione viene lanciata Lo spostarsi da un Activity ad un altra avviene invocando all interno di essa i cosiddetti Intent Esempio: Un app di posta elettronica potrebbe avere un Activity che mostra l elenco delle nuove email, un altra Activity per comporre un'email e un'altra Activity per la lettura dei messaggi di posta elettronica A.A. 2016-2017 3

Activity Stack Una sola Activity per volta può essere sullo schermo Le Activity presenti nel sistema sono gestite mediante una pila detta activity stack, una per ogni applicazione lanciata nella schermata Home Quando una nuova Activity è avviata, è posizionata in cima allo stack e diventa l Activity in esecuzione L Activity precedente viene messa in pausa e spostata al di sotto. Non ritornerà in foreground fino a quando la nuova Activity termina o l utente la riseleziona Se l utente preme il back button l Activity successiva nello stack viene spostata al di sopra e diventa attiva L'utente può quindi navigare avanti e indietro tra le schermate aperte nell'activity stack. A.A. 2016-2017 4

Activity Lifecycle States (1) Una Activity possiede tre stati: attiva o in esecuzione in pausa terminata Pur essendo possibile avviare più applicazioni contemporaneamente soltanto una può occupare il display, mentre le altre saranno nascoste in background A.A. 2016-2017 5

Activity Lifecycle States (2) È attiva o in esecuzione quando è in foreground sullo schermo (in cima all activity stack per il task corrente) L Activity possiede il focus per l interazione con l utente. È in pausa quando ha perso il focus, ovvero smette di essere in primo piano (foreground), messa in secondo piano da un altra Activity. Continua però ad essere visibile all utente. Un Activity in pausa è completamente viva (mantiene le informazioni di stato e rimane collegata al Window Manager) Può essere killata dal sistema in caso di situazioni con scarsa memoria È terminata quando viene sostituita da un altra (ma è ancora istanziata in memoria). E completamente oscurata da un altra Activity e non è più visibile all utente. Potrà sempre essere killata dal sistema quando è necessario recuperare della memoria. A.A. 2016-2017 6

Visible Lifetime Il visible lifetime di una Activity avviene tra la chiamata al metodo onstart() e la chiamata al metodo onstop() In questa fase l utente può vedere l Activity sullo schermo, sebbene essa potrebbe non essere in foreground ed interagire con l utente I metodi onstart() e onstop() possono essere chiamati più volte, poiché l Activity si alterna nell essere visibile o nascosta all utente Tra questi due metodi è possibile conservare le risorse necessarie per visualizzare l Activity sullo schermo A.A. 2016-2017 7

Foreground Lifetime Il foreground lifetime di una Activity si ha tra la chiamata al metodo onresume() e quella al metodo onpause() In questo periodo di tempo l Activity è al di sopra di tutte le altre, è visibile sullo schermo e sta interagendo con l utente Una Activity può transitare frequentemente tra gli stati resumed e paused, ad esempio: onpause() è chiamato quando il dispositivo entra in fase di riposo o quando una nuova Activity viene avviata onresume() è invocato quando il risultato di una Activity o un nuovo Intent vengono consegnati, nonché non appena l Activity inizia ad interagire con l utente A.A. 2016-2017 8

Lifecycle Methods (1) oncreate() onstart() invocato quando l Activity è creata per la prima volta è il metodo in cui dovrebbe essere inserito tutto il codice per la fase di setup dell Activity a tale metodo è passato un oggetto Bundle per riportare l'activity nello stesso stato in cui si trovava la precedente istanza dell'activity terminata (se salvato) sempre seguito dal metodo onstart() invocato prima che l Activity sia resa visibile all utente seguito da onresume() se l Activity passa in foreground, oppure onstop() se diventa nascosta onresume() chiamato prima che l Activity cominci l interazione con l utente l Activity è in cima all activity stack, seguito da onpause() A.A. 2016-2017 9

Lifecycle Methods (2) onpause() onstop() invocato quando il sistema sta per ripristinare un altra Activity è tipicamente adoperato per confermare cambiamenti a dati persistenti, fermare le animazioni e altre cose che possono consumare CPU e così via seguito da onresume() se l Activity ritorna visibile oppure da onstop() se diventa invisibile all utente l activity in questo stato è killabile da parte del sistema invocato quando l Activity non è più visibile all utente questo può accadere perché l Activity sta per essere distrutta o perché un altra Activity (già esistente o nuova) è stata ripristinata seguito dal metodo onrestart() se l Activity sta ritornando ad interagire con l utente, o dal metodo ondestroy() se l Activity sta per essere eliminata A.A. 2016-2017 10

Lifecycle Methods (3) ondestroy() Eseguito alla chiusura e deallocazione dell activity è la chiamata finale che l Activity può ricevere può essere invocato o perché l Activity sta terminando (qualcuno ha chiamato il metodo finish() su di essa) oppure perché il sistema sta temporaneamente distruggendo questa istanza di Activity per recuperare spazio l Activity in questo stato è killabile da parte del sistema Le Activity negli stati killabili (onpause(), onstop(), ondestroy()) possono essere terminate dal sistema in qualsiasi momento, senza che venga eseguito altro codice dell activity onpause() è l unico metodo la cui chiamata è garantita prima che il processo venga terminato A.A. 2016-2017 11

Service Un Service non ha un interfaccia utente visiva, ma piuttosto l operazione è eseguita in background per un periodo di tempo indefinito (general-purpose entry point) È possibile connettersi (bind to) ad un Service in esecuzione, oppure avviarlo se esso non è già in esecuzione. Mentre si è connessi è possibile comunicare con il servizio attraverso le API che esso mette a disposizione Esempio: un Service potrebbe riprodurre musica in background mentre l'utente sta utilizzando un applicazione diversa o potrebbe recuperare dati in rete senza bloccare l'interazione con un Activity A.A. 2016-2017 12

Service Lifecycle (1) Così come un Activity, un Service ha dei metodi per la gestione del ciclo di vita che è possibile implementare per monitorare i suoi cambiamenti di stato: oncreate() onstartcommand() una data operazione deve essere eseguita in background onbind() stabilire una connessione tra l'applicazione richiedente ed il servizio richiesto ondestroy() A.A. 2016-2017 13

Service Lifecycle (2) L intero ciclo di vita di un servizio si ha tra la chiamata al metodo oncreate() e quando il controllo viene restituito dal metodo ondestroy() Come l Activity, un servizio esegue le fasi di setup nel metodo oncreate() e rilascia tutte le risorse nel metodo ondestroy() Esempio: un Service per l ascolto di musica in playback potrebbe creare il servizio che esegue la musica nel metodo oncreate() e quindi stoppare il servizio nel metodo ondestroy() A.A. 2016-2017 14

Broadcast Receiver Un Broadcast Receiver è un componente che non fa altro che ricevere e rispondere a messaggi inviati in broadcast, a prescindere dal normale user flow, ma in risposta ad un evento esterno Affinché un Broadcast Receiver venga chiamato non è necessario che la relativa applicazione sia in esecuzione Molti messaggi broadcast sono originati dal sistema (ad esempio hai ricevuto una e-mail ), ma una qualsiasi altra applicazione può generare dei broadcast I Broadcast Receiver non espongono un interfaccia utente Possono comunque avviare un Activity in risposta all informazione ricevuta, oppure possono adoperare il Notification Manager per avvertire l utente creando ad esempio una notifica nella barra di stato Più comunemente, però, un Broadcast Receiver è solo un gateway per altri componenti A.A. 2016-2017 15

Broadcast Receiver Lifecycle Resta in ascolto di Intent che vengono inviati in broadcast, piuttosto che spediti a singole applicazioni/activity Il sistema consegna un broadcast Intent a tutti i Broadcast Receiver interessati, che lo gestiscono in maniera sequenziale Ha un singolo metodo di callback, onreceive() Quando arriva un messaggio broadcast destinato al Broadcast Receiver, Android chiama il suo metodo onreceive() passandogli l oggetto Intent che contiene il messaggio Il Broadcast Receiver è considerato attivo solo quando sta eseguendo il suo metodo Quando onreceive() restituisce il controllo esso è inattivo A.A. 2016-2017 16

Content Provider (1) Un Content Provider rende un insieme specifico dei dati di un applicazione disponibile per le altre applicazioni (set condiviso dei dati di una app) I dati sono solitamente memorizzati nel file system, oppure in un database SQLite. Eventualmente può essere utilizzato anche il web o qualsiasi tipo di memorizzazione persistente. Il Content Provider implementa un insieme standard di metodi che consentono alle altre applicazioni di recuperare e memorizzare dati del tipo che esso gestisce Tuttavia, le applicazioni non chiamano direttamente tali metodi, ma usano i metodi di un oggetto chiamato Content Resolver. Un Content Resolver può comunicare con qualsiasi Content Provider; esso coopera con il provider per fornire le operazioni CRUD (create, retrieve, update, delete) Un Content Provider non è una banale astrazione di un database. E un entry point per un'applicazione che vuole pubblicare i suoi dati associandoli ad un URI. Tale URI viene distribuito ed altre entità possono utilizzarlo per accedere ai dati così condivisi Esempio: il sistema Android fornisce un Content Provider che gestisce le informazioni di contatto dell'utente. Qualsiasi applicazione con le autorizzazioni corrette può interrogarlo, per leggere e scrivere informazioni su una determinata persona. A.A. 2016-2017 17

Content Provider (2) I Content Provider espongono i loro dati sottoforma di tabelle di un database, ogni riga è un record e ogni colonna è un dato di particolare tipo e significato Ogni riga ha un ID numerico che identifica univocamente il record all interno della tabella Una query restituisce un oggetto Cursor che può muoversi tra i record e le colonne di un dato record per leggere il contenuto di ciascun campo Ogni Content Provider espone un URI pubblico che identifica univocamente l insieme dei dati che intende condividere A.A. 2016-2017 18

Content Provider (3) Un Content Provider che controlla più set di dati (più tabelle) espone un URI separato per ciascuno Tutti gli URI cominciano con la stringa content:// A: indica che i dati sono gestiti da un Content Provider B: la parte che identifica il Content Provider C: utilizzato dal Content Provider per determinare che tipo di dati sono stati richiesti. Se il content provider espone un solo tipo di dati può essere omesso; altrimenti può essere costituito da più segmenti. E il table path. D: l ID di un record specifico A.A. 2016-2017 19

Intent (1) Un applicazione Android può includere un qualsiasi numero di Activity Un Activity utilizza il metodo setcontentview( ) per esporre una singola UI tramite cui possono essere realizzate una serie di azioni Le Activity sono indipendenti tra loro; ma in generale cooperano per lo scambio di dati ed eseguire delle azioni Tipicamente, una di esse è designata come principale (main) e quindi verrà mostrata all utente quando l applicazione viene lanciata La Activity interagiscono tra loro in maniera asincrona Lo spostamento da una Activity ad un altra è realizzato creando e passando un Intent Un oggetto corrispondente ad un messaggio col quale si richiede un'azione ad un altro componente dell'applicazione Esempio: l attivazione di una Activity (o anche un servizio o un receiver) A.A. 2016-2017 20

Intent (2) La struttura dati dell'intent si compone dell'azione da effettuare e dei dati su cui agire. Gli elementi principali sono: Azioni: l azione built-in che deve essere realizzata (ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, o una qualsiasi azione creata dall utente) Dati: i dati su cui operare, quali ad esempio un numero di telefono da chiamare (espresso come un URI) Ci sono anche altri elementi secondari che è possibile includere (ad esempio extras per i Bundle) A.A. 2016-2017 21

Intent (3) Esempio: Possibili coppie azione/dati sono: ACTION_DIAL tel:123 visualizza la tastiera del telefono con il numero specificato inserito ACTION_VIEW http://www.google.com visualizza la pagina di Google all interno di un browser. ACTION_EDIT content://contacts/people/2 consente di digitare informazioni circa la persona il cui identificativo è 2 ACTION_VIEW content://contacts/people/2 utilizzato per avviare una activity per la visualizzate informazioni circa la persona il cui identificativo è 2 ACTION_VIEW content://contacts/people/ visualizza una lista di persone, attraverso cui l utente può navigare. La selezione di un particolare contatto da visualizzare genererà un nuovo Intent (ACTION_VIEW content://contacts/people/n) per l avvio di una nuova Activity A.A. 2016-2017 22

Intent (4) Il metodo startactivity(intent) avvia una nuova activity, che sarà posizionata in cima all activity stack. Il chiamante continua ad eseguire il suo thread A volte l utente vuole ottenere dei risultati dalla sub-activity richiamata una volta che essa termina Esempio: è possibile avviare un activity che consenta all utente di selezionare una persona da una lista di contatti e, quando essa termina, restituisce la persona che è stata selezionata. Per ottenere una risposta con dei risultati si utilizza il metodo startactivityforresult(intent, requestcodeid) : requestcodeid è un valore arbitrario che identifica la chiamata I risultati possono essere recuperati attraverso il metodo asincrono onactivityresult(requestcodeid, resultcode, Intent) dal nuovo oggetto Intent (separato dal precedente) A.A. 2016-2017 23

Esempio 1 Editare un particolare contatto (ID = 8) A.A. 2016-2017 24

Esempio 2 Visualizzare una pagina web In generale, potrebbe essere necessario richiedere specifici permission per eseguire un particolare Intent Tali permessi devono essere dichiarati nel manifest.xml A.A. 2016-2017 25

Intent Resolution Gli Intent possono essere suddivisi in due gruppi: Espliciti: individuano direttamente il componente a cui sono destinati attraverso il suo nome Impliciti: non utilizzano un nome per il componente target, ma dichiarano un compito che deve essere eseguito, senza conoscere staticamente la classe che lo implementa Per gli Intent impliciti è necessaria una strategia differente, Android deve individuare il miglior componente (o componenti) per gestire l Intent Il contenuto dell oggetto Intent è confrontato con quello dei cosiddetti Intent Filter (strutture associate ai componenti che possono potenzialmente ricevere Intent) I filtri servono a definire le capacità di un componente e a delimitare gli Intent che esso può gestire Se un componente non possiede alcun Intent Filter, può ricevere solo Intent espliciti Esempio: Una Activity che è in grado di mostrare le informazioni di contatto per una persona pubblicherà nel file AndroidManifest.xml un Intent Filter nel quale dirà che sa come gestire l'azione VIEW quando essa è applicata a dati che rappresentano una persona. A.A. 2016-2017 26

Bundle (1) Il concetto di Android Bundle è un semplice meccanismo utilizzato per passare dati tra Activity Un Bundle è una collezione di coppie <nome,valore> Esiste un insieme di metodi putxxx e getxxx adoperati per memorizzare e recuperare valori (singoli o vettoriali) di tipi di dato primitivi nei/dai bundle A.A. 2016-2017 27

Bundle (2) A.A. 2016-2017 28