Qu'est-ce que le cycle de vie d'activité Android?

Dans mon précédent article, vous avez appris qu'Intents nous permettait d'envoyer des messages d'un composant Android à un autre. Eh bien, un type de composant très important est une activité. 

Les activités sont un élément fondamental du développement d'applications Android. Et il est impossible de comprendre les activités sans comprendre également leurs cycles de vie. Dans cet article, vous apprendrez tout sur le cycle de vie de l'activité..

Cycle de vie de l'activité

Une activité est un seul écran sous Android. C'est comme une fenêtre dans une application de bureau ou un cadre dans un programme Java. Une activité vous permet de placer tous vos composants d'interface utilisateur ou widgets ensemble à l'écran.

Il est important de comprendre qu'une activité a un cycle de vie: c'est-à-dire qu'elle peut se trouver dans plusieurs états différents, en fonction de ce qui se passe avec l'application et de l'interaction utilisateur.. 

Méthodes de cycle de vie

Regardons de plus près le cycle de vie d'une activité Android. Chaque fois que l'état de l'activité change, l'une des méthodes de cycle de vie suivantes est appelée dans la classe d'activité.. 

onCreate (): Ceci est appelé lors de la première initialisation de l'activité. Vous devez implémenter cette méthode pour effectuer toute initialisation spécifique à votre activité..

onStart (): Ceci est appelé la première fois que l'activité est sur le point de devenir visible pour l'utilisateur, alors que l'activité se prépare à passer au premier plan et devient interactive. Une fois ce rappel terminé, le pour résumer() la méthode sera appelée.

pour résumer(): Lorsque l'activité entre dans cet état, elle commence à interagir avec l'utilisateur. L'activité se poursuit dans cet état jusqu'à ce que l'application ou l'Activité (par exemple un appel entrant) prenne le contrôle de quelque chose. Lorsque cela se produit, le onPause () la méthode sera appelée.

onPause (): Cette méthode est utilisée pour mettre en pause des opérations qui ne devraient pas se produire lorsque l’activité est en état de pause. Un appel à cette méthode indique que l'utilisateur quitte l'application. Par exemple, dans une application de lecteur de musique, un appel entrant provoque la transition de l'application vers un état de pause. Cela devrait couper ou mettre en pause la musique en cours de lecture. Lorsque l'utilisateur revient à l'application, le pour résumer() la méthode sera appelée.

onStop (): Cette méthode est appelée lorsque l'activité n'est plus visible dans l'application. Cela peut arriver, par exemple, lorsqu'une autre activité a été chargée et prend tout l'écran de l'appareil. Lorsque cette méthode est appelée, l'activité est dite à l'état arrêté. Dans cet état, le système appelle le onRestart () pour ramener l'interactivité avec Activity. Ou il appelle le onDestroy () méthode pour détruire l'activité.

onDestroy (): Ceci est appelé avant que l'activité ne soit détruite. Le système appelle cette méthode lorsqu'un utilisateur termine l'activité ou parce que le système est en train de détruire temporairement le processus contenant l'activité pour économiser de l'espace. Assurez-vous de libérer toutes les ressources créées par votre activité avec cette méthode, sinon votre application aurait une fuite de mémoire.!

onRestart (): Ceci est appelé lorsqu'une activité redémarre après son arrêt..

Commencer une activité

La plupart des interactions de l'utilisateur avec une application entraînent la modification de l'activité active. Ainsi, une application effectue une transition entre les activités plusieurs fois au cours de sa vie..

Il est nécessaire de lier des activités lorsqu'une activité doit démarrer une autre activité. Pour démarrer une activité, vous utilisez soit startActivity () ou startActivityForResult (). Vous devez passer une intention dans les deux cas.

Commencer une activité sans résultat attendu

startActivity () est utilisé si l'activité récemment lancée n'a pas besoin de renvoyer un résultat.

L'extrait de code suivant montre comment démarrer une autre activité à l'aide de cette méthode:

Intention d'intention = nouvelle intention (this, SecondActivity.class); startActivity (intention);

Vous pouvez également effectuer des actions telles que le transfert de données d'une activité à une autre. Dans ce cas, votre activité actuelle (l'activité appelante) souhaite transmettre des données à une activité cible. C'est là que les intentions sont utiles. Pour en savoir plus sur l'utilisation d'intentions pour démarrer une activité, consultez mon article précédent..

Commencer une activité avec un résultat

startActivityForResult () est utilisé pour démarrer une autre activité et s'attend à récupérer les données de la nouvelle activité. En d’autres termes, utilisez-le lorsque vous souhaitez obtenir un résultat de l’activité cible en retour à l’activité appelante, par exemple. si l'activité cible collecte des informations sur l'utilisateur dans une boîte de dialogue modale.

Vous recevez le résultat de l'activité dans le onActivityResult (int requestCode, int resultCode, données d'intention) méthode. Le résultat sera retourné comme une intention.

Exemple de démarrage d'une activité

Voici un exemple pour montrer comment démarrer une activité.

Tout d’abord, vous créez votre Activité principale avec votre onCreate () méthode, un fichier de présentation et un code de demande.

 Classe publique MainActivity. Activity // Code de requête unique pour chaque cas d'utilisation. private statique final int REQUEST_CODE_EXAMPLE = 0x9345; @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); 

Dans ton onCreate () méthode, vous allez créer une nouvelle instance d'intention de démarrer votre deuxième activité. 

Lorsque vous êtes prêt à commencer cette activité, par exemple, en réponse à un clic sur un bouton, vous appelez startActivityForResult (), qui passera l'intention nouvellement créée et le code de demande.

 // Créer une nouvelle instance d'intention pour démarrer SecondActivity final Intent intent intent = new Intent (this, SecondActivity.class); // Ceci démarre SecondActivity avec le code de requête startActivityForResult (intent, REQUEST_CODE_EXAMPLE);

Pourtant, dans ton Activité principale, vous devez gérer les événements de résultat d'activité. Vous faites cela en implémentant le onActivityResult ()  méthode. Voici comment vous recevrez le résultat de l'autre activité. 

Voici à quoi cela devrait ressembler:

 // onActivityResult est uniquement appelé // lorsque l'autre activité a déjà commencé à utiliser startActivityForResult @Override public void onActivityResult (int requestCode, int resultCode, données d'intention) super.onActivityResult (requestCode, resultCode, data); // Nous devons d'abord vérifier si le requestCode correspond à celui que nous avons utilisé. if (requestCode == REQUEST_CODE_EXAMPLE) // Le resultCode est défini par SecondActivity // Selon la convention RESULT_OK, tout ce que // SecondActivity a exécuté a été exécuté avec succès if (resultCode == Activity.RESULT_OK) // Récupère le résultat du résultat Intention final String result = data.getStringExtra (SecondActivity.EXTRA_DATA); // Utiliser les données - dans ce cas, affichez-les dans un Toast. Toast.makeText (this, "Résultat:" + résultat, Toast.LENGTH_LONG) .show ();  else // setResult n'a pas été exécuté avec succès par SecondActivity // En raison d'une erreur ou d'un flux de contrôle. Aucune donnée à récupérer. 

Maintenant, allez-y et créez votre Deuxième activité. Cela devrait ressembler au code ci-dessous.

 @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_detail); bouton final bouton = (bouton) findViewById (R.id.button); // Lorsque ce bouton est cliqué, nous voulons renvoyer un résultat.setOnClickListener (nouvelle View.OnClickListener () @Override public void onClick (Vue d'affichage) // Crée un nouvel objet Intent en tant que conteneur du résultat final Intent data = new Intent (); // Ajoute les données requises à renvoyer à MainActivity data.putExtra (EXTRA_DATA, "Quelques données intéressantes!"); // Définissez le code de résultat comme Activity.RESULT_OK sur // pour indiquer le succès et attachez l'intention // qui contient nos données de résultat setResult (Activity.RESULT_OK, data); // Avec finish (), nous fermons la SecondActivity pour // revenir à MainActivity finish ();); 

Terminer une activité

Avant qu'une activité se termine, les méthodes de cycle de vie correspondantes seront appelées.

le onPause () La méthode devrait arrêter tous les écouteurs et les mises à jour de l'interface utilisateur. le onStop () La méthode doit sauvegarder les données de l'application. Finalement, le onDestroy () Cette méthode libérera toutes les ressources allouées par l'activité. 

Lorsque l'utilisateur revient à une application qui a été fermée par le système, le pour résumer() méthode est appelée. Basé sur des données sauvegardées, il peut ré-enregistrer des écouteurs et déclencher des mises à jour de l'interface utilisateur..

Etat de l'instance d'activité

Une activité a besoin d'un moyen de conserver les précieuses données d'état et d'utilisateur qu'elle a obtenues. Ces données peuvent être obtenues à partir des entrées de l'utilisateur ou créées alors que l'activité n'était pas à l'écran..

Par exemple, un changement d'orientation du périphérique peut entraîner la destruction et la recréation d'une activité. Dans un tel scénario, vous devez vous assurer de sauvegarder tout l'état de l'activité avant sa destruction et de le recharger à nouveau lorsqu'il est recréé. Sinon, toutes les données de votre activité à ce moment-là peuvent être complètement perdues.

Pour enregistrer l’état de l’activité, vous pouvez remplacer la onSaveInstanceState () méthode. Cette méthode est passée un Paquet objet en tant que paramètre. Un ensemble peut contenir des chaînes, des types de données primitifs ou des objets. Dans cette méthode, ajoutez simplement les données d’état importantes à l’ensemble. Cet ensemble sera retourné à l'activité ultérieurement afin que vous puissiez restaurer l'état de l'activité..

Pour extraire l’état sauvegardé du bundle et le restaurer, implémentez le onRestoreInstanceState () méthode. Ce rappel est appelé entre le onStart () et le pour résumer() méthodes de cycle de vie.

Nous examinerons plus en détail l'état d'instance d'activité dans un prochain article..

Conclusion

Après avoir suivi cet article, vous comprendrez bien le fonctionnement du cycle de vie d’une activité. Et vous avez appris qu'il existe deux façons de démarrer une activité et d'obtenir des indications sur la manière dont l'état de l'instance est géré dans le cycle de vie de l'activité..

Merci de votre lecture et pendant que vous êtes ici, consultez certains de nos autres articles sur le codage des applications Android..