SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Chi sono

                         Lorenzo Braghetto
                                           @monossido


     Student of Computer science in University of Padua,
                               Free Software addicted,
                                          Travels lover,
                                     Android developer,
                                             Rugby fan.
                              www.lorenzobraghetto.com




           
Android – la crescita
    ●   Inizialmente sviluppato dalla Android Inc. acquisita da Google nel 2005
    ●   Uno dei cofondatori della Android Inc., Andy Rubin, ora è vice presidente del settore
        mobile di Google
    ●   A fine 2007 viene fondata la Open Headset Alliance, comprendente oggi 84
        soggetti fra produttori software, hardware e operatori mobili.
    ●   Subito dopo viene rilasciato l'SDK di Android versione 1.0
    ●   Settembre 2008 primo telefono Android, T-mobile G1 (aka HTC Dream) - “With
        Google”
    ●   Nel 2009 c'è il primo boom; febbraio esce Android versione 1.1, aprile la 1.5,
        settembre la 1.6, ottobre la 2.0
    ●   Gennaio 2010 esce Android 2.1, assieme al primo Google Phone, il Nexus One.
    ●   Maggio 2010 esce Android 2.2, considerata una versione stabile e matura di Android.
    ●   Dicembre 2010 esce Android 2.3, assieme al secondo Google Phone, il Nexus S.
    ●   Febbraio 2011 esce Android 3.0, prima versione di Android completamente closed
        source.




                                                   
Android - Numeri

          550K terminali attivati al giorno
                (si parla già, non ufficialmente, di 1milione al giorno)




           135 milioni di terminali venduti
              400 modelli diversi di device

    dati aggiornati a giugno 2011 che riguardano solo i device con le Google Apps




                                          
Android – Modello di sviluppo
                    Android è open source, diffidate da chi dice il contrario.*
    ●   Licenza Apache2 (con parti GPLv2)
    ●   Sorgenti rilasciati sempre (honeycomb a parte) tempestivamente su
        http://android.git.kernel.org/
    ●   Nonostante la relativa velocità di rilascio di nuove versioni il modello di
        sviluppo si avvicina più ad un modello “Cattedrale” piuttosto che “Bazar”
        (© Eric S. Raymond)
             Sorgenti rilasciati tutti su un colpo, poca predisposizione ad accettare patch, tramacci con
             le aziende produttrici di dispositivi.
    ●   Fork del kernel Linux
             Fin da subito il kernel usato poteva essere considerato un fork, solo col tempo si è capito
             però che Google non è molto interessata a contribuire al kernel “mainline”. Linus in questo
             però si è dimostrato ottimista.
        *Stallman ultimamente ha detto che Android non è software libero, non ho troppa difficoltà a dire che ha
        ragione, ma open source lo rimane.



                                                              
Android – i nostri telefoni
                  Che software gira nei nostri telefoni?
                  È Android, ma non è Android.
                  Nella stra-grande maggioranza dei telefoni gira sempre
                  una versione di Android più o meno pesantemente
                  modificata dal produttore.
                  Merito o demerito della licenza Apache2, che permette a
                  chiunque di prendere i sorgenti Android, fare le proprie
                  modifiche e rilasciarle con la licenza che più gli aggrada,
                  anche closed source.

    Solo i Google Phone possono “vantarsi” di far girare una versione di
    Android direttamente derivata dai sorgenti Google. Anche in questo caso
    però non bisogna dimenticarsi delle Google Apps proprietarie e di
    eventuali probabili driver e librerie anch'esse proprietarie.




                                       
Android – Perchè e come.
        Perchè Google si è buttata nel mondo mobile? E perchè l'ha
        fatto utilizzando un modello di sviluppo open source?
        Perchè ha scelto la licenza Apache2?
    ●   Il mobile è diventata una grande opportunità, Google l'ha capito giusto in
        tempo ed è riuscita a smuovere il mercato.
    ●   Google, da sempre, guadagna soldi con l'advertising offrendo servizi
        gratuiti agli utenti. Questo è un modello di business che si adatta molto
        bene al modello di sviluppo open source. Il software non è un prodotto
        da vendere, ma un servizio.
    ●   Apache2 è perfetta per accellerare l'adozione di una nuova piattaforma.
        I produttori non sprecano soldi a reinventare la ruota e possono
        “brandizzare” a piacere Android, nel frattempo Google continua ad
        aumentare il bacino di utenti che usano i suoi servizi.




                                            
Android – problemi per gli utenti
        La scelta della licenza Apache2 e di un modello di distribuzione
        aperto a qualunque produttore ha creato qualche problema agli
        utenti (e agli sviluppatori).
        L'utente che compra un nuovo telefono con Android andrà ad usare in realtà
        “Android by $produttore”.
        Tutto quello che riguarda la manutenzione del software, quindi, non è
        responsabilità di Google, ma dei produttori. Questo può comportare per
        esempio che:
    ●   per motivi commerciali viene deciso di non aggiornare più il software di
        alcuni dispositivi (tipicamente di fascia bassa)
    ●   se arrivano gli aggiornamenti normalmente arrivano sempre in ritardo rispetto
        i Google Phone
    ●   vengono aggiunti bug (vedi camera samsung Galaxy S)
    ●   l'interfaccia, cambiando, può cambiare anche l'estetica delle applicazioni
        create da terzi.

                                              
Android - vantaggi
        E i vantaggi?
    ●   SO mobile open source, con il progetto Neo Freerunner fallito e Meego
        abbandonato teniamoci ben stretto Android (e speriamo in Tizen)
    ●   Un'unica piattaforma sviluppata da un colosso dell'informatica
        disponibile in tante diverse versioni e, soprattutto, che gira su hardware
        tanto diversi è un grosso vantaggio sia per l'utente che per lo
        sviluppatore.
    ●   Non è solo il codice che è aperto, ma tutto l'ecosistema. A partire dalla
        semplice libertà di personalizzazione dell'utente, passando per un market
        senza filtri e imposizioni dall'alto, libertà di installare un'applicazione
        senza passare dal Market, buona possibilità di integrarsi col sistema
        tramite le API.
    ●   Naturalmente la possibilità di crearsi una propria versione di Android :) (se
        si ha un dispositivo con bootloader sbloccabile)


                                             
Come evitare gli svantaggi e
              godere dei vantaggi?
        Comprate un Google Phone e compilatevi la vostra
        personale versione di Android o usate/compilate quella di
        qualcuno più esperto di voi. (cyanogen ;) )
    ●   + i Google Phone hanno il supporto diretto in AOSP
    ●   - rimarrete comunque dipendenti da librerie e driver proprietari oltre che
        dalle Google Apps (se le volete)




                                            
Android - Programmiamo!
        Basi della programmazione Android:


    ●   Activity                       → UI
    ●   Service                        → Servizi in background
    ●   BroadcastReceiver              → Ricevono “segnali”




                                    
Android - Activity
    L'activity è quel processo che si prende carico di visualizzare
    l'interfaccia grafica dell'applicazione.
    Vita di un'activity:
    onCreate() → onStart() → onResume() →
    onRestart() →
    onPause() → onStop() → onDestroy()
    Il sistema può decidere, nel caso di scarsa quantità di ram
    disponibile, di distruggere le activity che ha in memoria.




                                   
Android - Activity




              
Android – Activity
        Lo stato di un activity viene salvato?
    ●   Fino a che l'activity rimane nell'onStop() o nell'onPause() l'activity
        mantiene tutti gli oggetti in memoria e l'utente che tornerà ad
        un activity già precedentemente utilizzata la vedrà inalterata.
    ●   Se l'activity entra nell'onDestroy i dati venogno, ovviamente, persi.
        In quel caso lo sviluppatore può preoccuparsi di salvare alcuni
        dati “critici” grazi al onSaveInstanceState() e a recuperarli con
        l'onRestoreInstanceState()


        Una volta con meno di 256mb di ram il secondo caso era il più probabile.
        Ora con 512mb di ram il problema è meno marcato.




                                            
Android - Interfaccia
           Come viengono disegnati gli oggetti di un
           interfaccia?
           Tramite file XML è possibile realizzare
           l'interfaccia.

           Recentemente l'editor visuale ha finalmente
           raggiunto livelli accettabili (ma non
           sufficienti).




                 
Android - Interfaccia
    Lato codice java l'interfaccia scritta in XML va aggiunta col comando
    setContentView() nel metodo onCreate()




    Qualsiasi altra interazione dell'utente con l'interfaccia grafica può essere
    implementata nell'onCreate() o negli altri metodi, ma in questo modo le
    azioni verranno eseguite nel Thread dell'UI, rallentandolo.
    D'altra parte nessun altro Thread esterno può modificare la UI.
    Soluzione → AsyncTask




                                          
Android – Supportare diverse
                    Risoluzioni
        Un grande pregio di Android è che con relativamente poca fatica si
        possono creare applicazioni compatibili con i più disparati dispositivi. I
        problemi principali sono la grandezza dello schermo e la densita di pixel.
    ●   Regola numero 1, AndroidManifest.xml



    ●   Regola numero 2, usare i dp(Density-independent pixel ) e se proprio
        necessario le cartelle layout-small/medium/large/xlarge (che identificano
        la grandezza dello schermo)
    ●   Regola numero 3, usare le cartelle drawable-*dpi per le immagini (che
        identificano la densita di pixel) e se necessario usare il tool Draw 9-patch.




                                              
Android - Servizi
    I servizi si usano quando c'è bisogno di un processo che andrà in
    background e che non è legato a nessun'activity particolare.
    Ciclo di vita di un servizio:
    onCreate() → onStartCommand()
    → onDestroy()
    Anche i Servizi, come le Activity, possono essere killati dal sistema
    se manca RAM.
    Per ovviare a questo problema si può usare il metodo
    startForeground() che richiede come argomento un
    oggetto “notification”.




                                      
Android - BroadcastReceiver
        Il BroadcastReceiver è un “ricevitore” di segnali. Può essere usato
        per segnali custom o segnali generati dal sistema.
    ●   Segnali custom, potrebbe service al cambio di un'impostazione da parte
        dell'utente o per avvisare un activity o un servizio di un certo evento.
    ●   Segnali mandati dal sistema; utilissimi per l'integrazione col sistema,
        alcuni esempi:


        Grazie a questi Broadcast Intent molte applicazioni
        che si trovano di default nel sistema possono essere
        tranquillamente sostituite da applicazioni alternative,
        come l'app Messaggi, il launcher, il browser...




                                                  
Android – Altri esempi di
                    integrazione
    ●   Intent filter
           Nell'AndroidManifest è possibile specificare che una certa
           Activity riesca a gestire precise azioni e dati e che faccia parte
           di una precisa categoria. Esempio, fare in modo che compaia
           fra le applicazioni che riescono a “gestire” immagini.




                                          
Android – Altri esempi di
               integrazione
    Altri esempi intent-filter
    AppLink




                                  
Fine
    I could have made money this way, and perhaps amused myself
    writing code. But I knew that at the end of my career, I would look
    back on years of building walls to divide people, and feel I had
    spent my life making the world a worse place
    Avrei potuto fare soldi in questo modo, e mi sarei anche potuto
    divertire scrivendo codice. Ma sapevo che alla fine della mia
    carriera mi sarei guardato indietro verso anni passati a costruire
    muri per dividere le persone. E avrei sentito di aver speso la mia
    vita rendendo il mondo peggiore
                                                                         ??
    Happy coding.
    Mail: lorenzo@lorenzobraghetto.com
    Twitter: @monossido
    Blog: lorenzobraghetto.com
    G+: Lorenzo Braghetto
    Jabber/Gtalk: monossido@lorenzobraghetto.com
                                         

Contenu connexe

Tendances

follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Android
QIRIS
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
GoWireless
 

Tendances (9)

follow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Androidfollow-app BOOTCAMP 3: Android
follow-app BOOTCAMP 3: Android
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Iniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con AndroidIniziare a sviluppare su mobile con Android
Iniziare a sviluppare su mobile con Android
 
Io, Android
Io, AndroidIo, Android
Io, Android
 
Presentazione del GDG Cosenza
Presentazione del GDG CosenzaPresentazione del GDG Cosenza
Presentazione del GDG Cosenza
 
Google Glass - Overview 2015
Google Glass - Overview 2015Google Glass - Overview 2015
Google Glass - Overview 2015
 
Soluzioni per la produzione multimediale
Soluzioni per la produzione multimedialeSoluzioni per la produzione multimediale
Soluzioni per la produzione multimediale
 
MOBILE APPS con ANDROID - Lo Stretto Digitale
MOBILE APPS con ANDROID  - Lo Stretto DigitaleMOBILE APPS con ANDROID  - Lo Stretto Digitale
MOBILE APPS con ANDROID - Lo Stretto Digitale
 

Similaire à Android, panoramica e sviluppo

Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
DotNetMarche
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
Nicola Pedot
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for success
Acrmnet s.r.l.
 
Presentazione tesina
Presentazione tesinaPresentazione tesina
Presentazione tesina
chicosstefan
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano Colosio
Whymca
 
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platformSviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
Dan Ardelean
 

Similaire à Android, panoramica e sviluppo (20)

Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare
 
Sviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGapSviluppo di applicazioni mobile con PhoneGap
Sviluppo di applicazioni mobile con PhoneGap
 
Flutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaformaFlutter: Google alla conquista del mobile multi piattaforma
Flutter: Google alla conquista del mobile multi piattaforma
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
 
Android
AndroidAndroid
Android
 
Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30Introduzione ad Android jug marche meeting 2011_04_30
Introduzione ad Android jug marche meeting 2011_04_30
 
Introduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile AndroidIntroduzione al sistema operativo mobile Android
Introduzione al sistema operativo mobile Android
 
Introduzione ad Android
Introduzione ad AndroidIntroduzione ad Android
Introduzione ad Android
 
Programmazione mobile: ANDROID
Programmazione mobile: ANDROIDProgrammazione mobile: ANDROID
Programmazione mobile: ANDROID
 
Workshop sul Free Software Ordine degli Ingegneri
Workshop sul Free Software Ordine degli IngegneriWorkshop sul Free Software Ordine degli Ingegneri
Workshop sul Free Software Ordine degli Ingegneri
 
Android Code Camp 2012 - ita
Android Code Camp 2012 - itaAndroid Code Camp 2012 - ita
Android Code Camp 2012 - ita
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for success
 
Android programming
Android programmingAndroid programming
Android programming
 
Presentazione tesina
Presentazione tesinaPresentazione tesina
Presentazione tesina
 
platforms
platformsplatforms
platforms
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformance
 
Crossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano ColosioCrossdev sdk/tools: devil's deception - Luciano Colosio
Crossdev sdk/tools: devil's deception - Luciano Colosio
 
Crossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deceptionCrossdev sdk/tools: devil's deception
Crossdev sdk/tools: devil's deception
 
Sviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platformSviluppo di applicazioni mobile cross platform
Sviluppo di applicazioni mobile cross platform
 
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
Le basi per lo sviluppo su Windows Phone tool, SDK, il primo progetto
 

Android, panoramica e sviluppo

  • 1. Chi sono Lorenzo Braghetto @monossido Student of Computer science in University of Padua, Free Software addicted, Travels lover, Android developer, Rugby fan. www.lorenzobraghetto.com    
  • 2. Android – la crescita ● Inizialmente sviluppato dalla Android Inc. acquisita da Google nel 2005 ● Uno dei cofondatori della Android Inc., Andy Rubin, ora è vice presidente del settore mobile di Google ● A fine 2007 viene fondata la Open Headset Alliance, comprendente oggi 84 soggetti fra produttori software, hardware e operatori mobili. ● Subito dopo viene rilasciato l'SDK di Android versione 1.0 ● Settembre 2008 primo telefono Android, T-mobile G1 (aka HTC Dream) - “With Google” ● Nel 2009 c'è il primo boom; febbraio esce Android versione 1.1, aprile la 1.5, settembre la 1.6, ottobre la 2.0 ● Gennaio 2010 esce Android 2.1, assieme al primo Google Phone, il Nexus One. ● Maggio 2010 esce Android 2.2, considerata una versione stabile e matura di Android. ● Dicembre 2010 esce Android 2.3, assieme al secondo Google Phone, il Nexus S. ● Febbraio 2011 esce Android 3.0, prima versione di Android completamente closed source.    
  • 3. Android - Numeri 550K terminali attivati al giorno (si parla già, non ufficialmente, di 1milione al giorno) 135 milioni di terminali venduti 400 modelli diversi di device dati aggiornati a giugno 2011 che riguardano solo i device con le Google Apps    
  • 4. Android – Modello di sviluppo Android è open source, diffidate da chi dice il contrario.* ● Licenza Apache2 (con parti GPLv2) ● Sorgenti rilasciati sempre (honeycomb a parte) tempestivamente su http://android.git.kernel.org/ ● Nonostante la relativa velocità di rilascio di nuove versioni il modello di sviluppo si avvicina più ad un modello “Cattedrale” piuttosto che “Bazar” (© Eric S. Raymond) Sorgenti rilasciati tutti su un colpo, poca predisposizione ad accettare patch, tramacci con le aziende produttrici di dispositivi. ● Fork del kernel Linux Fin da subito il kernel usato poteva essere considerato un fork, solo col tempo si è capito però che Google non è molto interessata a contribuire al kernel “mainline”. Linus in questo però si è dimostrato ottimista. *Stallman ultimamente ha detto che Android non è software libero, non ho troppa difficoltà a dire che ha ragione, ma open source lo rimane.    
  • 5. Android – i nostri telefoni Che software gira nei nostri telefoni? È Android, ma non è Android. Nella stra-grande maggioranza dei telefoni gira sempre una versione di Android più o meno pesantemente modificata dal produttore. Merito o demerito della licenza Apache2, che permette a chiunque di prendere i sorgenti Android, fare le proprie modifiche e rilasciarle con la licenza che più gli aggrada, anche closed source. Solo i Google Phone possono “vantarsi” di far girare una versione di Android direttamente derivata dai sorgenti Google. Anche in questo caso però non bisogna dimenticarsi delle Google Apps proprietarie e di eventuali probabili driver e librerie anch'esse proprietarie.    
  • 6. Android – Perchè e come. Perchè Google si è buttata nel mondo mobile? E perchè l'ha fatto utilizzando un modello di sviluppo open source? Perchè ha scelto la licenza Apache2? ● Il mobile è diventata una grande opportunità, Google l'ha capito giusto in tempo ed è riuscita a smuovere il mercato. ● Google, da sempre, guadagna soldi con l'advertising offrendo servizi gratuiti agli utenti. Questo è un modello di business che si adatta molto bene al modello di sviluppo open source. Il software non è un prodotto da vendere, ma un servizio. ● Apache2 è perfetta per accellerare l'adozione di una nuova piattaforma. I produttori non sprecano soldi a reinventare la ruota e possono “brandizzare” a piacere Android, nel frattempo Google continua ad aumentare il bacino di utenti che usano i suoi servizi.    
  • 7. Android – problemi per gli utenti La scelta della licenza Apache2 e di un modello di distribuzione aperto a qualunque produttore ha creato qualche problema agli utenti (e agli sviluppatori). L'utente che compra un nuovo telefono con Android andrà ad usare in realtà “Android by $produttore”. Tutto quello che riguarda la manutenzione del software, quindi, non è responsabilità di Google, ma dei produttori. Questo può comportare per esempio che: ● per motivi commerciali viene deciso di non aggiornare più il software di alcuni dispositivi (tipicamente di fascia bassa) ● se arrivano gli aggiornamenti normalmente arrivano sempre in ritardo rispetto i Google Phone ● vengono aggiunti bug (vedi camera samsung Galaxy S) ● l'interfaccia, cambiando, può cambiare anche l'estetica delle applicazioni create da terzi.    
  • 8. Android - vantaggi E i vantaggi? ● SO mobile open source, con il progetto Neo Freerunner fallito e Meego abbandonato teniamoci ben stretto Android (e speriamo in Tizen) ● Un'unica piattaforma sviluppata da un colosso dell'informatica disponibile in tante diverse versioni e, soprattutto, che gira su hardware tanto diversi è un grosso vantaggio sia per l'utente che per lo sviluppatore. ● Non è solo il codice che è aperto, ma tutto l'ecosistema. A partire dalla semplice libertà di personalizzazione dell'utente, passando per un market senza filtri e imposizioni dall'alto, libertà di installare un'applicazione senza passare dal Market, buona possibilità di integrarsi col sistema tramite le API. ● Naturalmente la possibilità di crearsi una propria versione di Android :) (se si ha un dispositivo con bootloader sbloccabile)    
  • 9. Come evitare gli svantaggi e godere dei vantaggi? Comprate un Google Phone e compilatevi la vostra personale versione di Android o usate/compilate quella di qualcuno più esperto di voi. (cyanogen ;) ) ● + i Google Phone hanno il supporto diretto in AOSP ● - rimarrete comunque dipendenti da librerie e driver proprietari oltre che dalle Google Apps (se le volete)    
  • 10. Android - Programmiamo! Basi della programmazione Android: ● Activity → UI ● Service → Servizi in background ● BroadcastReceiver → Ricevono “segnali”    
  • 11. Android - Activity L'activity è quel processo che si prende carico di visualizzare l'interfaccia grafica dell'applicazione. Vita di un'activity: onCreate() → onStart() → onResume() → onRestart() → onPause() → onStop() → onDestroy() Il sistema può decidere, nel caso di scarsa quantità di ram disponibile, di distruggere le activity che ha in memoria.    
  • 13. Android – Activity Lo stato di un activity viene salvato? ● Fino a che l'activity rimane nell'onStop() o nell'onPause() l'activity mantiene tutti gli oggetti in memoria e l'utente che tornerà ad un activity già precedentemente utilizzata la vedrà inalterata. ● Se l'activity entra nell'onDestroy i dati venogno, ovviamente, persi. In quel caso lo sviluppatore può preoccuparsi di salvare alcuni dati “critici” grazi al onSaveInstanceState() e a recuperarli con l'onRestoreInstanceState() Una volta con meno di 256mb di ram il secondo caso era il più probabile. Ora con 512mb di ram il problema è meno marcato.    
  • 14. Android - Interfaccia Come viengono disegnati gli oggetti di un interfaccia? Tramite file XML è possibile realizzare l'interfaccia. Recentemente l'editor visuale ha finalmente raggiunto livelli accettabili (ma non sufficienti).    
  • 15. Android - Interfaccia Lato codice java l'interfaccia scritta in XML va aggiunta col comando setContentView() nel metodo onCreate() Qualsiasi altra interazione dell'utente con l'interfaccia grafica può essere implementata nell'onCreate() o negli altri metodi, ma in questo modo le azioni verranno eseguite nel Thread dell'UI, rallentandolo. D'altra parte nessun altro Thread esterno può modificare la UI. Soluzione → AsyncTask    
  • 16. Android – Supportare diverse Risoluzioni Un grande pregio di Android è che con relativamente poca fatica si possono creare applicazioni compatibili con i più disparati dispositivi. I problemi principali sono la grandezza dello schermo e la densita di pixel. ● Regola numero 1, AndroidManifest.xml ● Regola numero 2, usare i dp(Density-independent pixel ) e se proprio necessario le cartelle layout-small/medium/large/xlarge (che identificano la grandezza dello schermo) ● Regola numero 3, usare le cartelle drawable-*dpi per le immagini (che identificano la densita di pixel) e se necessario usare il tool Draw 9-patch.    
  • 17. Android - Servizi I servizi si usano quando c'è bisogno di un processo che andrà in background e che non è legato a nessun'activity particolare. Ciclo di vita di un servizio: onCreate() → onStartCommand() → onDestroy() Anche i Servizi, come le Activity, possono essere killati dal sistema se manca RAM. Per ovviare a questo problema si può usare il metodo startForeground() che richiede come argomento un oggetto “notification”.    
  • 18. Android - BroadcastReceiver Il BroadcastReceiver è un “ricevitore” di segnali. Può essere usato per segnali custom o segnali generati dal sistema. ● Segnali custom, potrebbe service al cambio di un'impostazione da parte dell'utente o per avvisare un activity o un servizio di un certo evento. ● Segnali mandati dal sistema; utilissimi per l'integrazione col sistema, alcuni esempi: Grazie a questi Broadcast Intent molte applicazioni che si trovano di default nel sistema possono essere tranquillamente sostituite da applicazioni alternative, come l'app Messaggi, il launcher, il browser...    
  • 19. Android – Altri esempi di integrazione ● Intent filter Nell'AndroidManifest è possibile specificare che una certa Activity riesca a gestire precise azioni e dati e che faccia parte di una precisa categoria. Esempio, fare in modo che compaia fra le applicazioni che riescono a “gestire” immagini.    
  • 20. Android – Altri esempi di integrazione Altri esempi intent-filter AppLink    
  • 21. Fine I could have made money this way, and perhaps amused myself writing code. But I knew that at the end of my career, I would look back on years of building walls to divide people, and feel I had spent my life making the world a worse place Avrei potuto fare soldi in questo modo, e mi sarei anche potuto divertire scrivendo codice. Ma sapevo che alla fine della mia carriera mi sarei guardato indietro verso anni passati a costruire muri per dividere le persone. E avrei sentito di aver speso la mia vita rendendo il mondo peggiore ?? Happy coding. Mail: lorenzo@lorenzobraghetto.com Twitter: @monossido Blog: lorenzobraghetto.com G+: Lorenzo Braghetto Jabber/Gtalk: monossido@lorenzobraghetto.com