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);
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