Android 6: Guida per lo sviluppatore

Lo scorso 28 gennaio è uscito il mio ultimo libro sulla programmazione Android dedicato ad Android 6 ovvero Marshmallows. Si tratta di una versione del testo quasi completamente nuova nella quale ho sviluppato, da zero, una applicazione per la visualizzazione degli orari di arrivo dei Bus. Questa applicazione è stata il pretesto per scrivere ben 13 capitoli con i seguenti titoli:

  1. Android e Java
  2. Creazione ambiente con Android Studio
  3. Le Activity ed il flusso di navigazione
  4. Fragment e primi componenti Material Design
  5. ActionBar e Toolbar
  6. View e Layout
  7. ListView e RecyclerView
  8. Data Binding Library
  9. Gestione della persistenza
  10. Multithreading e servizi
  11. Sicurezza e Networking
  12. Gestione delle animazioni
  13. Location e Mappe

39 thoughts on “Android 6: Guida per lo sviluppatore

  1. buongiorno,
    innanzitutto complimenti per il libro guida, veramente completo e dettagliato.
    Non sono riuscito, però, a trovare il codice allegato al libro. Sarebbe cosi gentile da fornirmi un link? Oppure un modo per ottenerlo?
    grazie ancora

  2. Buongiorno Massimo,
    ho prenotato il tuo nuovo libro Android 6 ma intanto sto cercando di imparare con il precedente Android 4.
    Il mio problema è che sto cercando di usare gli esempi che ho scaricato ma quando provo a caricarli su Andoid Studio ver. 1.5.1 mi danno tanti errori e non riesco a farli andare. Mi puoi aiutare ?

    Grazie mille

    • Buongiorno,
      siccome Android Studio cambia in continuazione la cosa migliore e’ seguire il testo e creare il progetto da zero utilizzando il codice allegato. In ogni caso ho testato tutti i progetti i quali dovrebbero poter essere importati tranquillamente in AS.
      Saluti
      Massimo Carli

  3. Appunto, sarebbe più comodo l’ebook visto che c’è gente come me che è sempre in movimento. Se possibile ci fornisca le tempistiche

    grazie

    • Buongiorno,
      la ringrazio per l’interesse verso i miei libri. Ho sollecitato piu’ volte l’editore che mi ha detto che la versione e-book sara’ disponibile entro due settimane.
      Saluti
      Massimo Carli

  4. Buonasera,
    Prima di tutto le faccio i complimenti per i suoi testi che sono fantastici e sono stati per me di grande aiuto !
    Le volevo chiedere una cosa su quest’ultimo testo.
    Al capitolo 9 (gestione della persistenza) ho avuto problemi ad utilizzare il database creato “offlineBusStopDb.sqlite”, sul testo parla di modificare il DAO per utilizzare il file ma ne sul testo ne sul codice scaricabile è presente questa modifica , rimane tutto ai tipi raw.
    Sono io che sto sbagliando o effettivamente non è presente ?

    La ringrazio

    • Buongiorno,
      la ringrazio per i complimenti. Mi puo’ dire per favore a che pagina del libro ne parlo?
      Grazie
      Massimo Carli

      • Salve, ho risolto.
        L’esempio a cui mi riferivo è presente in tutti i capitoli.
        Dato che manca l’icona “hamburger” non riuscivo a farlo comparire 🙂

  5. Salve,
    nel suo libro viene toccato l’argomento “Test”?
    Ho letto l’indice e l’indice analitico ma non sono riuscito a trovare nessuna voce inerente al keyword sopra menzionata.

    Grazie in anticipo.

  6. Buongiorno, Le chiedo un chiarimento. Tempo fa avevo acquistato il libro su Android 4 (Progetto UGHO), avevo cominciato a leggerlo, ma per motivi lavorativi e di tempo l’ho dovuto tralasciare. Ci sono differenze sostanziali tra la versione 4 e la versione 6? Posso partire leggendo la versione 4 o sono costretto a leggere la versione 6? Non tocco progetti android da tempo, quindi avrei bisogno di una bella rinfrescatina! 🙂

    Grazie dell’attenzione
    Giacomo

    • Buongiorno,
      nella versione 5 ci sono state diverse novità che vanno dalla nuova gestione dei permessi fino all’utilizzo dei componenti di Material Design. I componenti principali della piattaforma sono comunque gli stessi per cui per iniziare o ricominciare va bene anche il 4.

      Saluti
      Massimo Carli

  7. Buongiorno, ho l’edizione “Sviluppare applicazioni per Android” del 03/2011 e “Android 4 guida per lo sviluppatore del 09/2013” non ancora letti. Conosco linguaggi di programmazione tradizionali tipo “Cobol” e quest’estate vorrei cimentarmi con la programmazione a oggetti usando Android Studio 2.x. Consiglia di leggere unicamente l’ultima edizione di “Android 6: Guida per lo sviluppatore” sostituendo le letture precedenti? Grazie

    • Buongiorno,
      se vuole semplicemente iniziare a fare qualche applicazione, anche i precedenti testi vanno bene. Magari trovera’ qualche differenza nelle immagini in quanto Android Studio e’ cambiato ma nulla di impossibile.
      Saluti
      Massimo Carli

  8. Buongiorno, Massimo;
    vorrei sapere se la guida è consigliabile anche a chi è totalmente a digiuno di programmazione Android ( e Java ), oppure, in caso contrario, quali testi propedeutici consiglieresti di leggere, prima dell’acquisto del tuo.

    { buona giornata }.

    ===

    • Buongiorno,
      la ringrazio per l’interessa. Per poter utilizzare al meglio il mio libro è richiesta una buona conoscenza di un linguaggio ad oggetti come può essere Java o C++.

      Saluti
      Massimo Carli

    • Buongiorno,
      sebbene ci sia un primo capitolo introduttivo sul linguaggio Java, per il mio libro è richiesta la conoscenza di almeno un linguaggio di programmazione ad oggetti. Per Java esistono innumerevoli risorse in rete. Una di queste il celeberrimo “Thinking in Java” di Bruce Eckel.
      Saluti
      Massimo Carli

  9. Buongiorno Massimo.
    Ho un problema legato alla gestione delle icone in Android Studio versione 2.2 (differente da quella prevista nel testo Android 6 Guida per lo Sviluppatore).
    Quando scelgo un’icona nel web, effettuo il download e la trasformo in varie risoluzioni, nel momento in cui vado a copiare le cartelle che contengono le icone con le varie risoluzioni, Android Studio li colloca automaticamente nella cartella “mipmap” e non nella cartella “drawable”, senza dare l’opportunità di spostarla manualmente.
    E’ una procedura che posso accettare oppure è un difetto dell’ambiente Android Studio?
    Grazie.

    • Buongiorno,
      la presenza delle icone nella cartella delle risorse mipmap non è da considerarsi un problema per cui può fidarsi di Android Studio.

      Saluti
      Massimo Carli

  10. Buongiorno,
    complimenti per il libro, è veramente spiegato bene ed approfondisce bene gli argomenti.
    Ho però un problema arrivato al capitolo 4, nel FragmentTest creo una Master/Detail Flow come indicato, ma il codice generato da AndroidStudio (2.2.2) è differente: vengono generate la NewsDetailActivity, la NewsDetailFragment e la NewsListActivity, manca la NewsListFragment.
    Le classi generate poi sono molto diverse da quelle riportate nel capitolo, rendendomi difficile seguirlo. Da cosa può dipendere?
    Grazie, saluti

    • Buongiorno,
      Android Studio ha subito diverse modifiche ultimamente non solo per quelli che sono gli strumenti a disposizione ma anche per quello che riguarda il codice generato in casi come quello dei Fragment. Il codice generato non dovrebbe comunque essere molto diverso almeno in quelli che sono gli strumenti di gestione dei Fragment.
      Saluti
      Massimo Carli

    • Buongiorno,
      la ringrazio per l’interesse. Il libro comunque non tratta l’utilizzo di Open GL.

      Saluti
      Massimo Carli

  11. Buonasera
    Premesso che intendo acquistare anche la 6 per un raffronto, vorrei sapere se e quando, indicativamente, verrà rilasciata la guida per la versione 7. Vorrei imparare a sviluppare applicazioni da poter distribuire poi sul play store ma vedo che di testi o manuali in merito c’è davvero pochissimo in giro.
    Grazie, saluti.

    • Buongiorno,
      la ringrazio per l’interesse. Al momento non e’ in programma alcun aggiornamento del mio libro ad Android 7. Quelle che sono le principali API ed i meccanismi principali per lo sviluppo sono rimasti immutati. La differenza ora e’ relativa a nuove librerie o strumenti di Android Studio per i quali non vale la pena aggiornare il testo; almeno per il momento.
      Saluti
      Massimo Carli

  12. Buonasera…ho acquistato il suo libro di recente…sono arrivato quasi alla fine del capitolo 3 e ci sono parecchie istruzioni java relative al touch e intent per esempio che non capisco…le volevo chiedere se per caso venivano riprese più dettagliatamente nei capitoli più avanti…ho già una base di java ma queste istruzioni non le conosco proprio

  13. Salve , purtroppo non mi sono trovato molto bene con il suo libro , ho una buona base di java ma ho trovato il testo poco chiaro , nello specifico i dettagli sono spiegati bene ma non trovo una impostazione chiara della struttura dei vari pattern , ad esempio i fragment non si capisce come vadano aggiunti se con il solo file xml oppure dichiarati anche nel main xml , insomma sicuramente io non sono un genio ma ho trovato il testo davvero ostico

    • Buongiorno,
      mi dispiace il libro non sia stato di suo gradimento. Se ha dubbi o domande può comunque farle qui o nei vari forum.

      Saluti
      Massimo Carli

      • Buongiorno,
        Ho acquistato il suo libro sto leggendo il capitolo 7 (per come è fatto il libro non è necessario andare in sequenza)
        Mi interessa molto il lavoro sui fragment .In particolare
        class BusStopListFragment in questa classe sostituendo in
        public void onViewCreated getCustomAdapter4() il fragment
        non intercetta la selezione(l’ho verificato inserendo un toast in
        onListItemClick) .Ero curioso di capire il perchè.
        Sotto debug l’applicazione non da nessun errore.
        Saluti Ciro

  14. Save Massimo, ho comprato tutti i suoi libri.
    Android a mio avviso è il miglio OS per mobile. Sempre a mio avviso, per essere perfetto, dovrebbe essere non open o semi open che sia. Ciò che funziona in un Samsung potrebbe non funzionare su un huawei. Troppa libertà data alle fabbriche. Ho comprato praticamente un telefono per ogni marca per testare le app, possiedo circa 25 telefoni Android, un vero inferno il debug. un esempio pratico. Un servizio che gira in Background START_STIKY si sà, la guida android ufficiale lo cita, è un servizio che potrebbe essere ucciso dalle famose sentinelle e a discrezione del produttore decidere se farlo ripartire o meno. Su LG, Samsung e Android Originale, un servizio in BK START_STIKY ucciso per liberare risorse, il servizio viene sempre e comunque fatto ripartire, su huawei, honor e cinesi in generale no. EMUI molto aggrssiva. Ho come l’impressione che la batteria sia diventata per i cinesi una vera e propria ossessione, avranno preso la scossa da piccoli, chissà. è solo una delle tante differenze, potrei continuare. Oltre ciò, anche ad ogni nuova versione di Android ci sono stravolgimenti che ci costringono ad aggiornare l’app, come ad esempio il fatto di dover chiedere a runtime i permessi di consumo batteria in background dalla 7. troppe differenze, e troppo impegno, sviluppare Android vuol dire abbandonare tutto il resto e fare solo quello. Fin che il mercato è l’ 80% mi sta bene, ma cosa succede se un Tizen dovesse veramente prendere una buona fetta di mercato ? Chi ha fatto grande Android è stata la Samsung. In sordina, senza fare rumore gli orologi sono usciti con Tizen. la stessa cosa potrebbero fare con il samsung s9. Ok, allora per trasferire dati pesanti uso la sincronizzazione automatica, li ho garanzia di non essere bloccato. Macchè. Huawei ha una app messa in bella evidenza che ottimizza le risorse e disabilita la sincronizzazione automatica. In alcuni modelli, per esempio il p8 lite 2017, l’ottimizzazione è automatica, l’utente non deve fare niente. Persino il GCM è messo a tacere, in stand by internet si pegne per risparmiare batteria dopo 2 ore, vallo anche a capire, certe cose le scopri solo dopo il beta, con le segnalazioni degli utenti. Vabbe, uno compra un huawei e si regola di conseguenza. Macchè, nel p9 lite cambia tutto, altri comportamenti. Honor idem.

    In definitiva, non pensa che google dovrebbe rendere android closed, o perlomeno dare delle direttive precise alle fabbriche come la Honor o Huawei, al fine di rendere una app compatibile su tutti gli Android ? Il mio amico pizzaiolo che ha comprato un Huawei, quando ha visto che telegram non riceveva le notifiche o che il oneDrive non scaricava le foto sul cloud, non ha detto il huawei non funziona, ha detto android è una porcheria, ritorno all’Iphone. Telegrtam stessa, nella faq dice che su hawei non si ricevono le notifiche perche la honor e huawei spengono i servizi in background. C’è di peggio. Se io insisto nell’usare una sincronizzazione per scaricare dati, sai che fa la huawei ? fà un bel kill della app e orevoire, se ne parla al prossimo riavvio.

    • Ciao Fabio,
      mi scuso per l’enorme ritardo nella risposta. Uno degli aspetti positivi di Android e’ proprio una certa liberta’ nella implementazione di alcune sue parti. Per i componenti principali ci sono comunque delle regole che le diverse implementazioni devono necessariamente rispettare. A volte questo non avviene ma solamente su certi dispositivi che potremmo definire “esotici” 🙂 le cose stanno comunque migliorando di anno in anno.

      Saluti
      Massimo

  15. Buongiorno,
    ho una domanda / segnalazione a riguardo:
    Capitolo 9, pagina 472: Perchè nel metodo addFavourite, in caso di duplicato si setta mDirty = false? E’ un duplicato ma soltanto per quanto riguarda l’ID, potrebbe essere cambiata qualche altra proprietà di BusStop, in tal caso mDirty dovrebbe essere positivo, per permettere di rileggere la lista aggiornata, corretto?
    In caso di non duplicato invece ci si limita ad aggiornare la currentFavourite, ma questa aggiunta non verrà salvata all’interno delle sharedpreferences, perchè andrebbe invece salvata nella lista mFavouriteCache. E’ corretto quello che dico oppure ho preso un abbaglio?

    Grazie

    • Buongiorno,
      mi scuso per il ritardo nella risposta. In effetti si assume che la fermata con un particolare id non venga aggiornata nelle altre proprieta’. Questo nella realta’, almeno a Londra, e’ cosi ma ovviamente in generale puo’ essere come dice lei. In quel caso il tutto si semplificherebbe cancellando ed aggiungendo nuovamente l’informazione ad ogni invocazione. In questa implementazione mDirty e’ false in quanto si tratterebbe di salvare qualcosa di uguale a quello che si ha gia’; ovviamente con l’assunzione di cui sopra.

      Saluti
      Massimo Carli

Leave a Reply

Your email address will not be published. Required fields are marked *