mardi 22 novembre 2011

Androïd : Activités, Services, Broadcast Receivers et Intents

Le développeur Android se doit de bien connaître le langage Java avant de se lancer dans l'aventure Androïd.

Une fois la chose faite, l'architecture Android offre des grands concepts, des composants dont il convient de bien saisir la philosophie.

J'ai nommé : Les activités, les services, les "Broadcast Receivers" et les Intents.


Les Intents :
Ce sont à mes yeux les composants les plus importants de l'architecture Android (si je dois trouver une chronologie dans les importances).

Les objets de type Intent permettant de faire communiquer vos activités entre elles, mais pas seulement : une activité communique des informations également à des services de cette manière.

Plus encore les objets intents permettant la communication des composants au sein de tout l'OS Android : Il existe des intents "standards" spécifiés par Google permettant de lancer : un lecteur PDF, un Browser Web, un appel téléphonique, etc. : C'est énorme au sein d'Androïd.

C'est un des concepts de base que Google(tm) a posé en créant Android : le concept de la ré utilisation de tous les composants des applications, la communication inter applications grâce aux intents.

Vous utiliserez donc un intent pour :
- Une activité de votre application lance une seconde activité de votre programme (ou d'un autre programme Android).
- Une activité de votre application lance un service de votre programme (ou d'un autre programme).
- Un broadcast receiver reçoit un intent de l'OS lui-même ou d'une autre application (type l'utilisateur vient de changer la langue ou le time zone).

Un intent est un objet qui est utilisé pour passer des paramètres (quelconques) d'un composant Android à un autre et ce, sans se pré occuper des processus et de leur gestion mémoire.


Les activités :
En fait une application Android de base est une suite d'activités, d'écrans. Les activités (classe : Activity) sont des écrans Android.

Pour changer d'écran dans votre programme, il s'agit généralement d'une activité qui en lance une autre. 
Exemple : L'activité 1 lance l'activité 2 suite au click (ou touche) sur un bouton.

Il vous faut voir l'activité comme un écran contenant des vues (View). Ces dernières sont en faits des contrôles tels que des boutons, champs, vue image, etc.

Une application Android est en fait une pile d'activités : ce qui explique que quand vous utilisez le bouton 'back' du périphérique, et s'il existe une activité précédente, vous revenez sur celle-ci.

Les activités une fois instanciées reste en mémoire la plupart du temps, ce qui a permet à l'utilisateur qui redemande le lancement d'une application de revenir en contexte.

Attention néanmoins : Android peut tuer vos activités en 'background'.

Les activités sont des composants graphique.


Les services :
Ce sont des tâches de fond, des objets qui une fois instanciés (via des intents), reste en 'background'. Ils peuvent survivre au composant (exemple : l'activité) qui les a lancé.

On peut démarrer un service ou l'arrêter, se lier à un service ou se séparer du service.

Il est aussi possible en l'associant à un broadcast receiver, de lancer un service au boot d'Android.

Attention au code qui tourne en tâche de fond = consommation électrique potentielle.

Les services ne sont pas des composants graphiques.


Les Broadcast receivers :
Ce sont des composants qui sont spécialisés pour recevoir des communications "broadcast" sous forme d'intents.

Les "receivers" vont donc écouter certains intents (grâce à <intent-filter>).

<receiver
    android:name="MyReceiver">
<intent-filter>
             <action android:name="android.intent.action.BOOT_COMPLETED" />
        intent-filter>
receiver>


Vous pouvez donc utiliser les receivers pour écouter des canaux de communication spécifiques comme l'OS lui-même : changement de langues, de paramètres, réception de sms, etc.

Les receivers ne sont pas des composants graphiques.



J'espère que ces explications vous aideront dans le développement de vos applications Android.

1 commentaire:

  1. Merci bien. L'explication sur les receivers est simple et précise.

    RépondreSupprimer