Introduzione alla programmazione Android. Emanuel Di Nardo

Documenti analoghi
Sviluppo mobile Android

SISTEMI OPERATIVI ANDROID

ANDROID. Domenico Talia. Università della Calabria.

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

Sistemi Mobili e Wireless Android Introduzione alla piattaforma

Prof. Pagani corrado JAVA

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

Android. Project, Activity, Layout e Toast

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

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

Android development. Sviluppo di Mobile Apps sul sistema operativo di Google

Programmazione in ambiente

Programmazione Android. Luca Morettoni

L00_Introduction. E. Falzone ITIS Magistri Cumacini

Sviluppo su Android. Linux Day Torino 2010

Strumenti per il testing di applicazioni in ambiente Android

CORSO PROGRAMMAZIONE ANDROID

Corso di programmazione di sistemi mobile 1. Android. Architettura, ambiente di sviluppo e struttura di un progetto

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

Traduzione e interpretazione

Sistemi Mobili e Wireless Android - Servizi

Fondamenti di sviluppo mobile su Android

Android. Android. Sviluppo di applicazioni. Dalvik 19/03/2011. A. Ferrari

ProgettAzione tecnologie in movimento - V anno Unità 4 - Applicazioni per i sistemi mobili

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

Spazio di indirizzamento virtuale

Sistemi Mobili e Wireless Android Primi passi

Dott. Ing. Davide Maiorca

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

Programmazione Android

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

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

Le basi del linguaggio Java

Java il Corso Fondamentale

MagiCum S.r.l. Progetto Inno-School

Traduzione ed Interpretazione

Traduzione ed Interpretazione. Queste sconosciute

Android. Anatomia di una applicazione

Linguaggi Object Oriented: Principi e Introduzione a Java

Il sistema operativo Android

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

Architetture Applicative Altri Esempi

Ambienti di Sviluppo. Linguaggi compilati

Android. Android01: Introduzione alle Activity.

Il Sistema Operativo

Francesco V. Buccoli Microsoft Student Evangelist

AMBIENTI DI PROGRAMMAZIONE

Android Introduzione all architettura, alla programmazione e alla sicurezza. Alessandro Tanasi alessandro@tanasi.

Introduzione alla Programmazione. Giselda De Vita

Modulo 3. Ecosistema Android

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Diffusione Android e Malware

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Alma Mater Studiorum Università di Bologna Sede di Cesena. SECONDA FACOLT DI INGEGNERIA CON SEDE A CESENA Corso di Laurea in Ingegneria Informatica

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Tesina esame Programmazione di Sistemi Mobile Realizzato da Roberto Giuliani Matricola icloud. Inserimenti, modifiche e cancellazioni

Tecniche di progettazione e sviluppo di applicazioni mobile

Programmi e Oggetti Software

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Introduzione a Java. Riferimenti

La tua prima app su Android

Concetti base programmazione. Antonio Gallo

Ereditarietà e Polimorfismo

Service discovery nella API Java Bluetooth JSR-82

Indice generale. Capitolo 1 Introduzione ad Android... 1

Perché il linguaggio C?

TECNICHE DI RIDUZIONE DELLE TEST SUITE

Descrizione generale dell architettura del sistema e dell interazione tra i suoi componenti. Descrizione del sottosistema di sicurezza locale.

Filippo Druda LO SVILUPPO IN ANDROID

Corso Android New Edition Corso Online Programmatore Android New Edition

Indice. Introduzione PARTE PRIMA PRELUDIO: SERVIZIO CON SORRISO 1

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Organizzazione di un SO monolitico

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

20 Sviluppo di Applicazioni Mobile in Android

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Classi di Java introducono Oggetti e Tipi per il programma

Programmi e Oggetti Software

Laboratorio di Smart Vision and Sensor Networks. Niki Martinel Marco Vernier Dipartimento di Matematica e Informatica Università degli studi di Udine

Do-Dots Guida alla scrittura. Ultimo aggiornamento 5 agosto 2010

Corso sul linguaggio Java

Indice. Prefazione. 3 Oggetti e Java 53

Esonero di Informatica I. Ingegneria Medica

MaX - Un applicazione software per il

Strumenti per il testing di applicazioni in ambiente Android

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Struttura Logica del S.O:

Livelli del sottosistema di I/O

Sommario. 1 La shell di Windows PowerShell... 1

Open Database Connectivity (ODBC)

Corso Programmazione Java Standard

Verso l architettura MVC-2 Java Server Pages (JSP)

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

Fondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti

Java: vantaggi e applicazioni di un linguaggio moderno in contesti aziendali e produttivi. Presentazione a cura di: Andrea Bertolini

Sistemi operativi. Fondamenti di Informatica

Transcript:

Introduzione alla programmazione Android 1 Emanuel Di Nardo emanuel.dinardo@gmail.com

Architettura di base Insieme software composto da: Sistema operativo Middleware Applicazioni di base Utilizzo del linguaggio di programmazione Java con API dedicate 2

Suddivisione a strati del sistema: Applicazioni; Framework applicazioni; Librerie base; Livello esecutivo; Kernel; 3

Framework applicazioni: Strumenti per lo sviluppo; Accesso risorse hardware; Accesso senza restrizioni; Astrazione delle librerie; 4

Librerie base: Sviluppate in C/C++; Base dell App. Framework; 5

Livello esecutivo: Permette l esecuzione delle applicazioni; Fornisce la Virtual Machine; Implementa librerie di sistema; 6

Kernel: Basato su kernel linux 2.6+; Gestione della memoria; Sicurezza; Gestione processi; Connessioni; Driver di dispositivo; 7

Dalvik Virtual Machine VM alternativa alla JVM. Progettata per dispositivi con risorse limitate. Ogni applicazione ha la sua virtual machine. 8

La DVM è register-based, mentre la JVM è stack-based: Un registro ha una grandezza di 32 bit, mentre le coppie di registri adiacenti vengono considerate avere una grandezza di 64 bit; Se si referenziano degli oggetti allora un registro acquista una grandezza tale da riuscire a contenere lintero riferimento; Mediamente la richiesta per ogni metodo oscilla tra ~ 8-16 registri; 9

Processo di generazione del bytecode interpretato dalla DVM. Unico file.dex (Dalvik Executable) contenente i.class del Java compiler. 10

.dex file: Istruzioni da interpretare minori dei.class (natura register-based); Risorse condivise inserite una sola volta (stringhe, costanti, ecc...); File di dimensioni ridotte; David Ehringer The Dalvik Virtual Machine Architecture <http://davidehringer.com/software/android/the_dalvik_virtual_machine.pdf> 11

Struttura applicazioni Applicazioni divise in componenti: Activities; Services; Intent e Intent Filters; Content Providers; Broadcast Receivers; 12

All avvio di un applicazione android consulta il file AndroidManifest.xml. File estremamente importante: Contiene i permessi utilizzati dall applicazione; Versione API; Componenti hardware e software utilizzati; 13

AndroidManifest.xml supporta i seguenti tag per le componenti: <activity>; <service>; <provider>; <receiver>; Ogni tag ha un determinato tipo di attributi. Es: 14

Tutte le risorse (immagini, elementi UI) sono identificate da un ID univoco. Questo approccio ne semplifica l utilizzo in tutta l applicazione. Gli ID sono generati automaticamente nel file R.java Appaiono come valori esadecimali utilizzati dal sistema per le assegnazioni 15

R.java inoltre include riferimenti per ogni altro tipo di risorsa nel sistema. (Ad esempio le interfacce grafiche) NON DEVE ASSOLUTAMENTE ESSERE MODIFICATO! 16

Le applicazioni android sono in formato.apk che è un Android Package. Generato dopo la fase di compilazione. Contiene il file.dex, il manifest e tutte le risorse dell applicazione. Permette di firmare le applicazioni per l installazione sul dispositivo e per proteggere la stessa. 17

Activities Componente che permette l interazione con l utente ed è provvista di interfaccia utente. Un applicazione si compone di più activity. Coesistono e cooperano tra di loro scambiandosi informazioni. C è sempre un activity principale da presentare all apertura dell applicazione. Possono essere avviate da una componente di un applicazione esterna. Svolge un unico compito! 18

Quando creiamo un activity dobbiamo effettuare due operazioni fondamentali: Estendere la classe Activity; Inserire il suo riferimento statico nell AndroidManifest.xml; 19

Le activities rispettano un determinato ciclo di vita, da quando vengono mandate in esecuzione fino alla loro distruzione; E obbligatoria l implementazione del solo metodo oncreate(). E buona norma eseguire in questo metodo l inizializzazione dell Activity; 20

Back stack delle activity: Ogni nuova activity viene inserita in cima al back stack, mentre le precedenti attendono la sua esecuzione 21

E indispensabile invocare i metodi della superclasse tramite la super altrimenti si lancia un eccezzione! 22

Per terminare un activity abbiamo due possibilità: Invocare il metodo finish(); Invocare il metodo finishactivity() se vogliamo eseguire questa operazione da un altra activity; Non è obbligatorio invocare uno dei due metodi, android si occuperà di disfarsene quando non è più necessaria. 23

Services Esegue operazioni in background. Non è fornita di interfaccia utente. Sono di supporto alle activities (es. riproduzione musica, operazioni di I/O). Come per le activity possono essere avviati da componenti esterne all applicazione in cui sono fornite. 24

Possono essere avviati in due modalità: Started: tramite il metodo startservice(), gira in background per un tempo indefinito o finché la componente che lo ha avviato non ne richiede la fine o viene distrutta; Bound: tramite il metodo bindservice(), offre un interfaccia per la comunicazione client-server per poter interagire con esso. Attivo finché tutte le componenti sono associate con esso. Possiamo associare più di una componente per volta. 25

Girano nel main thread del processo se non diversamente richiesto. Prestare molta attenzione, può portare ad un errore del tipo Application Not Responding se esegue operazioni bloccanti o ad alto consumo di risorse. 26

Anche per i services bisogna eseguire le due operazioni descritte nelle activity: Estendere la classe Service: Inserire il riferimento al service nell AndroidManifest.xml: 27

Ci sono due cicli di vita per un service, in dipendenza dello stato in cui si trova. L unico metodo obbligatorio è onbind(), indipendentemente dallo stato in cui può trovarsi il service; E consigliato effettuare le inizializzazioni nel metodo oncreate(); *Android 1.6- utilizza onstart() al posto di onstartcommand() 28

Per fermare un service in modalità started possiamo usare: stopself(), invocabile dal service; stopservice(), invocabile dal componente che ha richiesto il service; Un service in stato bound si ferma solo quando tutte le componenti associate con esso si sono scollegate tramite il metodo unboundservice(). 29

Le richieste al sistema possono essere di due tipi: Implicite Esplicite

usato con i parametri dinamici (?); sortorder: indica l ordine in cui le righe ci verranno restituite;

Si definisce un file xml per ogni activity. Ogni elemento grafico ha la propria corrispondenza in tale file. Organizzazione in layout: FrameLayout: il più semplice, supporta un solo elemento per volta. LinearLayout: tutti gli elementi sono allineati in una sola direzione (vericale/ orizzontale)

Materiale disponibile ai seguenti indirizzi: http://goo.gl/kypzd http://students.uniparthenope.it