Introduction aux activités

La classe Activity est un composant essentiel d'une application Android. et la façon dont les activités sont lancées et organisées du modèle d'application de la plate-forme. Contrairement aux paradigmes de programmation les applications lancées avec une méthode main(), l'application Android système lance le code dans une instance Activity en invoquer des méthodes de rappel spécifiques correspondant à des étapes spécifiques leur cycle de vie.

Ce document présente le concept d'activités, puis fournit quelques exemples quelques conseils simples sur la façon de les utiliser. Pour en savoir plus sur les bonnes pratiques en matière de conception d'une application, voir <ph type="x-smartling-placeholder"></ph> Guide de l'architecture des applications.

Le concept d'activités

L'expérience sur l'application mobile diffère de l'expérience sur ordinateur 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 utilisateur commence souvent de manière non déterministe. Par exemple, si vous ouvrez une application de messagerie depuis l'écran d'accueil, un message liste d'e-mails. En revanche, si vous utilisez une application de médias sociaux lance votre application de messagerie, vous pouvez accéder directement à l'écran de l'application rédiger un e-mail.

La classe Activity est conçue pour faciliter ce paradigme. Lorsqu'une application en appelle une autre, l'application appelante appelle une activité dans l'autre et non dans son ensemble atomique. De cette manière, l'activité sert de le point d'entrée de l'interaction d'une application avec l'utilisateur. Vous implémentez une activité en tant que sous-classe de la classe Activity.

Une activité fournit la fenêtre dans laquelle l'application dessine son UI. 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. En général, une activité implémente un écran dans une application. Par exemple, l'une des activités d'une application peut un écran Preferences (Préférences) et une autre activité ; un écran Sélectionner une photo.

La plupart des applications contiennent plusieurs écrans, ce qui signifie qu'elles comportent plusieurs activités. En règle générale, une activité dans une application est spécifiée en tant que activité, qui est le premier écran à s'afficher lorsque l'utilisateur lance l'application. Chaque activité peut alors démarrer une autre activité afin de d'effectuer différentes actions. Par exemple, l'activité principale d'un simple e-mail peut fournir l'écran qui affiche une boîte de réception des e-mails. À partir de là, le principal activité peut lancer d'autres activités qui fournissent des écrans pour des tâches telles que rédiger des e-mails et ouvrir des e-mails individuels.

Bien que les activités fonctionnent ensemble pour former une expérience utilisateur cohérente dans un application, chaque activité n'est que faiblement liée aux autres activités ; il y a généralement une dépendance minimale entre les activités d’une application. En fait, activités déclenchent souvent des activités appartenant à d'autres applications. Par exemple : une application de navigateur peut lancer l’activité de partage d’une application de médias sociaux.

Pour utiliser des activités dans votre appli, vous devez enregistrer les informations les concernant dans le fichier 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.

Configurer le fichier manifeste

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

Déclarer des activités

Pour déclarer votre activité, ouvrez votre fichier manifeste et ajoutez un <activité> en tant qu'enfant de la classe <application> . Exemple :

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

Le seul attribut obligatoire pour cet élément est android:name, qui spécifie le nom de classe de l'activité. Vous pouvez aussi ajouter des attributs qui définissent des caractéristiques d'activité telles que l'étiquette, l'icône ou le thème de l'interface utilisateur. Pour en savoir plus sur ces attributs et sur d'autres, consultez les <activité> documentation de référence sur les éléments.

Remarque : Une fois votre application publiée, vous ne devez pas modifier l'activité noms. Sinon, vous risquez d'endommager certaines fonctionnalités, telles que les raccourcis d'application. Pour en savoir plus sur les modifications à éviter après la publication, consultez <ph type="x-smartling-placeholder"></ph> Ce qui ne peut pas changer.

Déclarer des filtres d'intent

Filtres d'intent sont une fonctionnalité très efficace de la plate-forme Android. Ils offrent la possibilité de lancer une activité non seulement en fonction explicite, mais aussi implicite. Par exemple : une demande explicite peut indiquer au système de « Démarrer l'activité d'envoi d'e-mail dans l'application Gmail". En revanche, une requête implicite indique l'écran "Envoyer un e-mail" une activité qui peut faire le travail. » Lorsque l'UI du système demande à un utilisateur quelle application utiliser dans l'exécution d'une tâche, il s'agit d'un filtre d'intent.

Vous pouvez profiter de cette fonctionnalité en déclarant une <intent-filter> dans <activity>. La définition de cet élément inclut une <action> et, éventuellement, un <catégorie> et/ou un élément <data> . Ces éléments combiner pour spécifier le type d'intent auquel votre activité peut répondre. Pour l'extrait de code suivant montre comment configurer une activité qui envoie des données textuelles et reçoit des requêtes d'autres activités à cette fin:

<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 ce par exemple, la balise <action> indique que cette activité envoie des données. Déclarer l'élément <category> car DEFAULT active l'activité pour recevoir des demandes de lancement. L'élément <data> spécifie le type de données cette activité peut envoyer. L'extrait de code suivant montre comment appeler la méthode l'activité décrite ci-dessus:

Kotlin

val sendIntent = Intent().apply {
    action = Intent.ACTION_SEND
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, textMessage)
}
startActivity(sendIntent)

Java

// 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 de s'activer ses activités, vous ne devez pas d'autres filtres d'intent. Les activités que vous ne voulez pas effectuer disponibles pour d'autres applications ne doivent pas comporter de filtres d'intent et vous pouvez les démarrer vous-même à l'aide d'intents explicites. Pour en savoir plus sur la façon dont vos activités peuvent répondre aux intents, consultez la section Intents et filtres d'intents.

Déclarer des autorisations

Vous pouvez utiliser le fichier manifeste <ph type="x-smartling-placeholder"></ph> Balise <activity> à contrôler les applications qui peuvent lancer une activité particulière. Une activité parent ne peut pas lancer un l'activité d'un enfant, sauf si les deux activités ont les mêmes autorisations fichier manifeste. Si vous déclarez un <ph type="x-smartling-placeholder"></ph> <uses-permission> d'une activité parent, chaque activité enfant doit être associée <ph type="x-smartling-placeholder"></ph> <uses-permission>. .

Par exemple, si votre application souhaite utiliser une application fictive nommée SocialApp pour partager un post sur les réseaux sociaux, SocialApp doit définir l'autorisation qu'une application qui l'appelle doit avoir:

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

/>

Ensuite, pour pouvoir appeler SocialApp, votre application doit correspondre à l'autorisation définie dans Fichier manifeste de SocialApp:

<manifest>
   <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>

Pour en savoir plus sur les autorisations et la sécurité en général, consultez Sécurité et autorisations

Gérer le cycle de vie d'une activité

Au cours de sa durée de vie, une activité passe par un certain nombre d'états. Vous allez utiliser une série de rappels pour gérer les transitions entre les états. Les sections suivantes introduisons ces rappels.

onCreate()

Vous devez implémenter ce rappel, qui se déclenche lorsque le système crée votre activité. Votre implémentation doit initialiser les composants essentiels votre activité: par exemple, votre application doit créer des vues et lier des données à cette liste. Plus important encore, c'est ici que vous devez appeler setContentView() pour définir la mise en page de l'interface utilisateur de l'activité.

Une fois l'opération onCreate() terminée, le rappel suivant est toujours onStart().

onStart()

Lorsque onCreate() se ferme, l'activité passe à l'état "Démarré", et l'utilisateur peut voir l'activité. Ce rappel contient ce qui correspond aux préparations finales de l'activité pour au premier plan et de devenir interactif.

onResume()

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

Le rappel onPause() est toujours suit onResume().

onPause()

Le système appelle onPause() lorsque l'activité est perdue et passe en pause. Cet état se produit lorsque, par exemple, l'utilisateur appuie sur le bouton Retour ou Récents. Lorsque le système appelle onPause() pour votre activité, techniquement, cela signifie que votre activité est encore partiellement visible, mais le plus souvent, cela indique que l'utilisateur quitte l'activité, celle-ci entrera bientôt dans la État "Arrêté" ou "Reprise"

Une activité mise en pause peut continuer à mettre à jour l'interface utilisateur si l'utilisateur attend que l'UI soit mise à jour. Il peut s'agir, par exemple, d'une activité montrant une navigation un écran de carte ou un lecteur multimédia. Même si de telles activités ne sont plus au premier plan, l'utilisateur s'attend à ce que son interface utilisateur continue de se mettre à jour.

Vous ne devez pas utiliser onPause() pour enregistrer l'application ou l'utilisateur de données, effectuer des appels réseau ou exécuter des transactions de base de données. Pour plus d'informations sur l'enregistrement des données, voir Enregistrer et restaurer l'état de l'activité

Une fois l'exécution de onPause() terminée, le rappel suivant est onStop() ou onResume(), en fonction se produit lorsque l'activité est mise en pause.

onStop()

Le système appelle onStop() lorsque le l'activité n'est plus visible par l'utilisateur. Cela peut se produire lorsque l'activité est en cours de destruction, qu'une nouvelle activité est en cours de suppression. ou qu'une activité existante entre est "Reprise" et couvre l'activité arrêtée. Dans tous ces cas, l'activité arrêtée n'est plus visibles du tout.

Le rappel suivant que le système appelle onRestart(), si la l'activité revient à interagir avec l'utilisateur onDestroy() si l'activité prend fin complètement.

onRestart()

Le système invoque ce rappel lorsqu'une activité à l'état "Arrêtée" est sur le point de redémarrer. onRestart() restaure l'état de l'activité depuis son arrêt.

Ce rappel est toujours suivi par onStart()

onDestroy()

Le système invoque ce rappel avant la destruction d'une activité.

Ce rappel est le dernier rappel reçu par l'activité. onDestroy() correspond à généralement implémentée pour garantir que toutes les ressources d'une activité sont lorsque l'activité ou le processus qui la contient sont détruits.

Cette section ne fournit qu'une introduction à ce sujet. Pour une le traitement détaillé du cycle de vie de l'activité et de ses rappels, consultez la section L'activité Lifecycle