Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 74 di 97
  • livello avanzato
Indice lezioni

Android Architecture Components

Con il Google I/O 2017 sono state introdotte le Android Architecture Components, un set di librerie che facilitano implementazione e progettazione delle app
Con il Google I/O 2017 sono state introdotte le Android Architecture Components, un set di librerie che facilitano implementazione e progettazione delle app
Link copiato negli appunti

Una delle novità più rilevanti del Google I/O 2017, è stata l'introduzione delle Android Architecture Components. Si
tratta di un insieme di librerie che propone un'architettura software che renda le applicazioni robuste, adatte ai test e facilmente manutenibili. Il passo compiuto con questa operazione è rilevante soprattutto perché sinora non era mai stata consigliata ufficialmente un'architettura per le applicazioni, nonostante le best practices citate nella documentazione fornissero linee guide importanti.

Il motivo che ha portato alla pubblicazione di tale libreria risiede nel sistema Android stesso. Ogni programmatore con un po' di
esperienza acquisisce presto alcune consapevolezze:

  • un'app è costituita da diversi tipi di componenti, ognuna specializzata in una particolare tipologia di attività.
    Abbiamo le Activity ed i Fragment per le interfacce utente, Content Provider per lo scambio di informazioni, i Service
    per le attività in background ed i BroadcastReceiver per la reazione agli eventi. Quasi tutte le componenti necessarie ad
    un'applicazione vanno menzionate nel file AndroidManifest.xml;
  • ogni componente segue un ciclo di vita che è sempre controllato dal sistema. Le nostre applicazioni subiscono le decisioni del sistema in base ad eventi e al comportamento dell'utente e noi sviluppatori non possiamo fare altro che predisporre del codice nei metodi di callback per pianificare le reazioni idonee;
  • per i suddetti motivi, le app non hanno struttura monolitica nè l'esecuzione attraversa sempre lo stesso entry point.
    In base alla configurazione ricevuta alcuni componenti dell'app possono entrare in azione in momenti diversi;
  • lo stato dell'applicazione può essere distrutto, in quanto Android è un sistema che nasce per lavorare con poche risorse ed in caso di necessità ogni nostra componente può essere distrutta con conseguente perdita di informazioni. Questa è una tematica molto importante e determina il ruolo particolarmente critico che la persistenza
    dei dati assume in Android.

Riflettere sui punti appena citati è importante proprio per chiarire perché determinate
funzionalità sono state incluse nella nuova architettura.

Principi e componenti della nuova architettura

I principi ispiratori della nuova architettura sono essenzialmente due:

  • il pattern Separation of concerns: ogni componente dell'applicazione deve sviluppare le proprie competenze senza creare colli di bottiglia. Dobbiamo evitare, ad esempio, di accumulare troppe funzionalità all'interno di un'Activity, ma saper
    discernere quale componente adottare in base alle operazioni da svolgere;
  • le interfacce utente devono essere guidate da un model possibilmente persistente, dove per model si intende un elemento software che gestisce dati separatamente dalle altre componenti dell'applicazione, restando pertanto indipendente dal loro ciclo di vita.

I pilastri della nuova architettura sono i seguenti:

  • Lifecycle: una sezione si occuperà dell'interazione delle componenti con il cilo di vita. Aiuterà a creare delle componenti lifecycle-aware facilitando i compiti dello sviluppatore;
  • ViewModel: la classe su cui si basa il model, che gestirà i dati mostrati dall'interfaccia utente. È anch'esso in relazione con il ciclo di vita e sostiene lo sviluppatore nell'affrontare i cambi di configurazione tra cui la rotazione del
    dispositivo;
  • LiveData: oggetti observable che permettono lo scambio di dati all'interno dell'applicazione;
  • Room: una libreria per la persistenza dei dati in SQLite che offre uno strato di astrazione in grado di agevolare le interazioni con il database;
  • Paging: una libreria che favorisce il caricamento graduale dei dati per soddisfare le necessità dell'utente senza
    penalizzare le prestazioni.

Come integrare le nuove librerie

Per integrare queste nuove librerie in un progetto Android Studio dobbiamo aggiungere un nuovo repository nel file
build.gradle a livello di progetto, con la seguente notazione:

allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
}
}

In questo modo potremo accedere al repository reperibile all'indirizzo https://maven.google.com, dove saranno disponibili
package diversi per Lifecycles, LiveData e ViewModel, Room e Paging.

Nelle prossime lezioni vedremo nei dettagli come funziona ognuno di questi sottosistemi, lo integreremo e lo proveremo
fino ad arrivare ad una nuova strutturazione per le nostre app Android.

Ti consigliamo anche