Android Architecture Components

15 novembre 2017

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 pò 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.

Tutte le lezioni

1 ... 72 73 74 ... 90

Se vuoi aggiornamenti su Android Architecture Components inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su Android Architecture Components

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy