Introduction aux activités (Android Activity)

La classe Activity est un composant crucial d’une application Android, et la manière dont les activités sont lancées et assemblées est un élément fondamental du modèle d’application de la plate-forme. Contrairement aux paradigmes de programmation dans lesquels les applications sont lancées avec une méthode main(), le système Android initie le code dans une instance Activity en invoquant des méthodes des appels spécifiques correspondant à des étapes spécifiques du cycle de vie d’une application.

Dans cet article, on présente le concept d’un activity, et montrer  quelques détails la manière de son utilisation. Pour plus d’informations sur les meilleures pratiques en matière d’architecture de votre application, consultez le Guide de l’architecture d’application.

Le concept d’un Android Activity

L’expérience de l’application mobile diffère de celle de l’ordinateur de bureau en ce sens que l’interaction d’un utilisateur avec l’application ne commence pas toujours au même endroit. Au lieu de cela, le parcours de l’utilisateur sur mobile commence souvent de manière non déterministe. Par exemple, si vous ouvrez une application de messagerie à partir de votre écran d’accueil, vous pouvez voir une liste de courriers électroniques. En revanche, si vous utilisez une application de médias sociaux qui lance ensuite votre application de messagerie, vous pouvez accéder directement à l’écran de l’application de messagerie pour composer un courrier électronique.

La classe d’activité est conçue pour faciliter ce paradigme. Lorsqu’une application en appelle une autre, l’application appelante appelle une activité dans l’autre application, plutôt que l’application en tant que tout atomique. De cette façon, l’activité sert de point d’entrée pour l’interaction d’une application avec l’utilisateur. Vous implémentez une activité en tant que sous-classe de la classe Activity.

Allons avec Android Activity

Une activité fournit la fenêtre dans laquelle l’application dessine son interface utilisateur. Cette fenêtre remplit généralement l’écran, mais peut être plus petite que l’écran et flotter au-dessus des autres fenêtres. Généralement, une activité implémente un écran dans une application. Par exemple, l’une des activités d’une application peut implémenter un écran Préférences, tandis qu’une autre activité implémente un écran Sélectionner une photo.

La plupart des applications contiennent plusieurs écrans, ce qui signifie qu’elles comprennent plusieurs activités. Généralement, une activité dans une application est spécifiée comme activité principale, qui est le premier écran à apparaître lorsque l’utilisateur lance l’application. Chaque activité peut alors démarrer une autre activité afin d’effectuer différentes actions. Par exemple, l’activité principale d’une simple application de messagerie peut fournir l’écran qui affiche une boîte de réception de courrier électronique. À partir de là, l’activité principale peut lancer d’autres activités qui fournissent des écrans pour des tâches telles que la rédaction de courriers électroniques et l’ouverture de courriers électroniques individuels.

Bien que les activités fonctionnent ensemble pour former une expérience utilisateur cohérente dans une application, chaque activité est faiblement liée aux autres activités. il existe généralement des dépendances minimales entre les activités d’une application. En fait, les activités démarrent souvent des activités appartenant à d’autres applications. Par exemple, une application de navigateur peut lancer l’activité Partager d’une application de médias sociaux.

Pour utiliser les activités de votre application, vous devez enregistrer des informations à leur sujet dans le manifeste de l’application, et vous devez gérer les cycles de vie des activités de manière appropriée. Le reste de ce document présente ces sujets.

Configuration du fichier manifeste

Pour que votre application puisse utiliser des activity, vous devez déclarer les activités et certains de leurs attributs dans le fichier AndroidManifest.xml de votre application.

Comment déclarer un Activity Android

Pour déclarer votre Activity, ouvrez votre fichier manifeste et ajoutez l’élément <activity> en tant qu’enfant de l’élément <application>. Par exemple:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

Le seul attribut requis pour cet élément est android: name, qui spécifie le nom de la classe de l’activité. Vous pouvez également ajouter des attributs qui définissent des caractéristiques d’activité telles que le libellé, l’icône ou le thème de l’interface utilisateur. Pour plus d’informations sur ces attributs et d’autres, voir l’article qui détaille le fichier Android Manifest.

Declarer intent filters

Intent filters est une fonctionnalité très puissante de la plate-forme Android. Ils permettent de lancer une activité non seulement sur demande explicite, mais aussi implicite. Par exemple, une demande explicite peut indiquer au système de lancer l’activité Envoyer un e-mail dans l’application Gmail. En revanche, une demande implicite demande au système de démarrer un écran Envoyer un e-mail pour toute activité pouvant être effectuée. Lorsque l’interface utilisateur du système demande à un utilisateur quelle application utiliser pour effectuer une tâche, il s’agit d’un Intent filter.

Vous pouvez tirer parti de cette fonctionnalité en déclarant un attribut <intent-filter> dans l’élément <activity>. La l’omplementation de cet élément comprend un élément <action> et, éventuellement, un élément <category>ou un élément <data>. Ces éléments se combinent pour spécifier le type d’Intent auquel votre activité peut répondre. Par exemple, l’extrait de code suivant montre comment configurer une activité qui envoie des données textuelles et reçoit des demandes d’autres activités:

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

Dans cet exemple, l’élément <action> spécifie que cette activité envoie des données. La déclaration de l’élément <category> comme DEFAULT permet à l’activité de recevoir des demandes de lancement. L’élément <data> spécifie le type de données que cette activité peut envoyer. L’extrait de code suivant montre comment appeler l’activité décrite ci-dessus:

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
// Start the activity
startActivity(sendIntent);

Si vous souhaitez que votre application soit autonome et ne permette pas à d’autres applications d’activer ses activités, vous n’avez pas besoin d’autres Intent Filter. Les activités que vous ne souhaitez pas mettre à la disposition d’autres applications ne doivent pas comporter de Intent Filter et vous pouvez les lancer vous-même à l’aide d’intentions explicites.

Déclarer les permissions pour un Android Activity

Vous pouvez utiliser la balise <activity> du fichier AndroidManifest.xml pour contrôler une applications pouvant démarrer une activité particulière. Une activité parent ne peut pas lancer une activité enfant à moins que les deux activités aient les mêmes autorisations dans leur manifeste. Si vous déclarez un élément <uses-permission> pour une activité particulière, l’activité qui sera appelée doit à son tour aussi avoir un élément <uses-permission> correspondant.

Par exemple, si votre application souhaite utiliser une application hypothétique nommée SocialApp pour partager une publication sur les médias sociaux, SocialApp elle-même doit définir l’autorisation qu’une application qui l’appelle doit posséder:

<manifest>
<activity android:name="...."
   android:permission=”com.google.socialapp.permission.SHARE_POST”

/>

Gestion de cycle de vie d’un Android Activity

Au cours de son existence, une activité traverse plusieurs états..

La méthode onCreate() de l’activity

Vous devez implémenter la méthode onCreate(), il se déclenche lorsque le système lance votre activité dans l’application. Votre implémentation doit initialiser les composants essentiels de votre activité: Par exemple, votre application doit créer des vues et lier des données à des listes ici. Plus important encore, vous devez appeler setContentView() pour définir la disposition de l’interface utilisateur de l’activité.

Lorsque onCreate() se termine, le prochain callback est toujours onStart().

La méthode onStart()


Lorsque onCreate() se termine, l’activité entre dans l’état démarré et l’activité devient visible pour l’utilisateur. cette méthide contient ce qui équivaut à la préparation finale de l’activité pour entrer au premier plan et devenir interactif.

La méthode onResume()

Le système appelle cette méthode juste avant que l’activité commence à interagir avec l’utilisateur. À ce stade, l’activité se situe en haut de la pile d’activités et capture toutes les entrées utilisateur. La plupart des fonctionnalités principales d’une application sont implémentées dans la méthode onResume().

La méthodes onPause() suit toujours onResume()

Avec la méthode onPause(), le système l’appelle lorsque l’activité perd le focus et passe en état de pause. Cet état se produit lorsque, par exemple, l’utilisateur appuie sur le bouton Retour ou Récent. Lorsque le système appelle onPause() pour votre activité, cela signifie techniquement que votre activité est toujours partiellement visible, mais le plus souvent indique que l’utilisateur quitte l’activité et que l’activité entrera bientôt dans l’état Arrêté ou Reprise.

Une activité en état de pause peut continuer à mettre à jour l’interface utilisateur si l’utilisateur s’attend à ce que l’interface utilisateur soit mise à jour. Des exemples d’une telle activité incluent un exemple montrant un écran de carte de navigation ou un lecteur multimédia en train de jouer. Même si de telles activités perdent de leur intérêt, l’utilisateur s’attend à ce que son interface utilisateur continue à se mettre à jour.

Vous ne devez pas utiliser onPause() pour enregistrer des données d’application ou d’utilisateur, effectuer des appels réseau ou exécuter des transactions de base de données.

Une fois que onPause() a fini de s’exécuter, la prochaine méthode est onStop() ou onResume(), selon ce qui se produit après que l’activité se passe en état de pause.

La méthode onStop()

Le système appelle onStop() lorsque l’activité n’est plus visible pour l’utilisateur. Cela peut se produire parce que l’activité est en cours de destruction, qu’une nouvelle activité démarre ou qu’une activité existante entre dans un état de reprise et couvre l’activité arrêtée. Dans tous ces cas, l’activité arrêtée n’est plus visible du tout.

La prochaine méthode que le système appelle est soit onRestart(), si l’activité revient à interagir avec l’utilisateur, soit par onDestroy() si cette activité se termine complètement.

La méthode onRestart()

Le système appelle la méthode onResume() lorsqu’une activité est à l’état d’arrêt et est sur le point de redémarrer. onRestart() restaure l’état de l’activité à partir du moment où il a été arrêté. La méthode onRestart() est toujours suivi par onStart().

onDestroy(), le système appelle cette méthode avant la destruction de l’activité.

Cette méthode est le dernier que l’activité reçoit. onDestroy() et est généralement implémenté pour garantir que toutes les ressources d’une activité sont libérées lorsque l’activité ou le processus le contenant est détruit.

Cette section fournit seulement une introduction à ce sujet. Pour un traitement plus détaillé du cycle de vie de l’activité et de ses méthodes veuillez lire la documentation sur le site officiel Google Developers.

 

Laisser un commentaire