Le componenti di un’app – Lezione 9 di Android

Attività, Servizi, Broadcast Receiver, Content Provider e la gestione degli Intent: Explicit, Implicit e Intent Filter

Ogni applicazione Android è costituita da un insieme di blocchi coperanti. Nello specifico, in Android esistono 4 tipi di componenti:

  • Attività. Le attività, in inglese Activity, sono quelle parti di un’applicazione che interagiscono con l’utente tramite lo schermo e i dispositivi di input. In particolare, un’attività è una classe che estende android.app.Activity ricevendo da quest’ultima per ereditarietà metodi e proprietà (si tratta di elementi utili per gestire lo schermo e gli input del dispositivo). In genere le attività utilizzano interfacce grafiche standard presenti nel android.widget e si realizzano estendendo la classe Activity.
  • Servizio. Con servizio si intendo quella parte di applicazione che gira in sottofondo sul dispositivo e non interagisce mai in maniera diretta con l’utente (ad esempio una canzone riprodotta in sottofondo mentre l’utente utilizza delle activity per fare altro). Un service può essere visto come un’attività del sistema o di un’applicazione e per poterla implementare occorre estendere la classe android.app.Service.

  • Broadcast Receiver. Per Broadcast Receiver si intende quel componente che si mette in “ascolto” e quando riceve un determinato tipo di messaggio effettua una determina azione (ad esempio lancia un’attività, comunica con un servizio, ecc.). La classe da estendere per creare un Broadcast Receiver è la classe android.content.BroadcastReceiver, creiamo un BR quando vogliamo intercettare un determinato evento sul sistema come quando si scatta una foto o quando parte la segnalazione di batteria scarica.
  • Content Provider. I Content Provider rappresentano un canale di comunicazione tra le differenti applicazioni installate nel sistema, si tratta di un componente che pubblica dati e informazioni. Viene utilizzato da altre applicazioni e per poter essere utilizzato bisogna estendere la classe android.content.ContentProvider.


La gestione degli Intent, cosa sono e come si usano

Un’applicazione quando deve essere avviata inizia dal Launcher che avvia la prima Activity inviandole un intent (messaggio che esprime un’intenzione dell’utente) e indica l’intenzione di avviarla. Una volta che la prima activity di un’applicazione viene avviata viene richiamato il metodo setLayout() per impostare l’interfaccia grafica. Da questo punto in poi, in base alle scelte dell’utente, il sistema reagisce in base alle azioni dell’utente (avviare nuove activity, inviare intent, interagire con dei servizi, recuperare o salvare dati tramite i Content Provider o terminare l’Activity).

Gli intent rappresentano un vero e proprio sistema di messaggistica che consente di far comunicare i vari componenti di un’applicazione. Gli intent possono essere suddivisi in due categorie:

  • Explicit Intent che avviano le activity (se già in esecuzione le “svegliano”);
  • Implicit Intent che richiedono l’esecuzione di una funzione.

Quando viene inviato un Explicit Intent il sistema cerca quali Activity possono rispondere, se ne trova più di una consente all’utente di scegliere quale utilizzare (ad esempio quando si vuole riprodurre un video e il dispositivo ci chiede quale applicazione utilizzare).
All’interno di un intent troviamo diverse informazioni:

  • Action, quale azione si vuole ottenere;
  • Data, su quali dati operare;
  • Category, categoria dell’azione;
  • Type, tipo dei dati (opzionale);
  • Component, componente a cui è indirizzato il messaggio (opzionale);
  • Extras, per ulteriori dati;
  • Flag, per controlli, ecc.

Ogni Activity deve dichiarare gli Implicit Intent a cui è interessata e per poterlo fare utilizza gli Intent Filter dichiarando una serie di filtri in cui indica i messaggi che vuole ricevere. Questi filtri consentono di specificare il tipo di Action, di Category e Data che l’attività vuole ricevere. A differenza degli intent impliciti, gli Explicit Intent non possono essere “filtrati” e saranno recapitati sempre alle Activity.

Android mette a disposizione molti intent, trovate maggiori informazioni a questo link.

Indice Lezione PrecedenteLezione Successiva

Pubblicato in Android, Android, Guide, Informatica, Programmazione Taggato con: , , , , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*