1. Bienvenue
Introduction
Dans cet atelier, vous en apprendrez plus sur le cycle de vie d'une activité. Le cycle de vie correspond à l'ensemble des états dans lesquels une activité peut se trouver au cours de sa durée de vie, depuis sa création jusqu'à sa destruction et la récupération des ressources par le système. Lorsqu'un utilisateur passe d'une activité à une autre dans votre application (et quand il bascule de votre application à une autre), les activités changent d'état dans leur cycle de vie.

Chaque étape du cycle de vie d'une activité possède une méthode de rappel correspondante : onCreate(), onStart(), onPause(), etc. Lorsqu'une activité change d'état, la méthode de rappel associée est appelée. Vous avez déjà vu l'une de ces méthodes : onCreate(). En remplaçant l'une des méthodes de rappel de cycle de vie dans vos classes Activity, vous pouvez modifier le comportement par défaut de l'activité en réponse aux actions de l'utilisateur ou du système.
L'état de l'activité peut également évoluer en fonction des changements apportés à la configuration de l'appareil, par exemple lorsque l'utilisateur fait pivoter l'appareil en mode Paysage. Lorsque ces modifications de configuration se produisent, l'activité est détruite et recréée dans son état par défaut. L'utilisateur peut alors perdre les informations qu'il a saisies dans l'activité. Pour éviter de perturber vos utilisateurs, il est important de développer votre application afin d'éviter toute perte de données inattendue. Dans la suite de cet atelier, vous testerez des modifications de configuration et apprendrez à préserver l'état d'une activité en réponse à des changements apportés à la configuration de l'appareil et à d'autres événements de cycle de vie d'une activité.
Dans cet atelier, vous allez ajouter des instructions de journalisation dans l'application TwoActivities et observer les changements de cycle de vie de l'activité lorsque vous l'utilisez. Vous commencerez ensuite à apprivoiser ces modifications et découvrirez comment gérer les entrées utilisateur dans ces conditions.
Connaissances préalables
Vous devez être en mesure d'effectuer les actions suivantes :
- Créer et exécuter un projet d'application dans Android Studio
- Ajouter des instructions de journalisation à votre application et consulter ces journaux dans le volet Logcat
- Comprendre et utiliser une
Activityet unIntent, et interagir facilement avec ces éléments
Points abordés
- Comment fonctionne le cycle de vie d'une
Activity - Quand une
Activitydémarre, se met en pause, s'arrête et est détruite - Les méthodes de rappel de cycle de vie associées aux modifications d'une
Activity - L'effet des actions (telles que les modifications de configuration) pouvant entraîner des événements de cycle de vie d'une
Activity - Comment conserver l'état d'une
Activitylors des événements de cycle de vie
Objectifs de l'atelier
- Ajouter du code à l'application TwoActivities de l'atelier précédent pour implémenter les différents rappels de cycle de vie d'une
Activityafin d'inclure des instructions de journalisation - Observer les changements d'état pendant l'exécution de votre application et lorsque vous interagissez avec chaque
Activityde votre application - Modifier votre application pour conserver l'état d'instance d'une
Activityrecréée de manière inattendue en réponse au comportement de l'utilisateur ou à un changement de configuration sur l'appareil
2. Présentation de l'application
Dans cet atelier, vous allez travailler avec l'application TwoActivities. L'application se comporte et fonctionne à peu près comme dans le dernier atelier de programmation. Elle contient deux implémentations d'Activity et permet à l'utilisateur d'échanger entre elles. Les modifications que vous apportez à l'application dans cet atelier n'affecteront pas son comportement visible pour l'utilisateur.
3. Tâche 1 : Ajouter des rappels de cycle de vie à TwoActivities
Dans cette tâche, vous allez implémenter toutes les méthodes de rappel de cycle de vie d'une Activity pour imprimer des messages dans Logcat lorsque ces méthodes sont appelées. Ces messages de journal vous permettent de voir quand le cycle de vie d'une Activity change d'état et comment ces changements affectent votre application pendant son exécution.
1.1 (Facultatif) Copier le projet TwoActivities
Pour les tâches de cet atelier, vous allez modifier le projet TwoActivities existant que vous avez créé dans le dernier atelier. Si vous préférez conserver le projet TwoActivities précédent intact, suivez la procédure décrite dans Annexe : Utilitaires pour créer une copie du projet.
1.2 Implémenter des rappels dans MainActivity
- Ouvrez le projet TwoActivities dans Android Studio, puis ouvrez MainActivity dans le volet Project > Android (Projet > Android).
- Dans la méthode
onCreate(), ajoutez les instructions de journalisation suivantes :
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
- Ajoutez un remplacement pour le rappel
onStart(), avec une instruction dans le journal pour cet événement :
@Override
public void onStart(){
super.onStart();
Log.d(LOG_TAG, "onStart");
}
Pour un raccourci, sélectionnez Code > Override Methods (Code > Remplacer les méthodes) dans Android Studio. Une boîte de dialogue s'affiche avec toutes les méthodes que vous pouvez remplacer dans votre classe. Si vous choisissez une ou plusieurs méthodes de rappel dans la liste, un modèle complet est inséré pour ces méthodes, y compris l'appel requis à la super-classe.
- Utilisez la méthode
onStart()comme modèle pour implémenter les rappels de cycle de vieonPause(),onRestart(),onResume(),onStop()etonDestroy().
Toutes les méthodes de rappel ont les mêmes signatures (à l'exception du nom). Si vous utilisez les options Copier et ColleronStart() pour créer ces autres méthodes de rappel, n'oubliez pas de mettre à jour le contenu pour appeler la bonne méthode dans la super-classe et la journaliser.
- Exécutez votre application.
- Cliquez sur l'onglet Logcat en bas d'Android Studio pour afficher le volet Logcat. Vous devriez voir trois messages de journal affichant les trois états du cycle de vie par lesquels l'
Activityest passée au début :
D/MainActivity: ------- D/MainActivity: onCreate D/MainActivity: onStart D/MainActivity: onResume
1.3 Implémenter des rappels de cycle de vie dans SecondActivity
Maintenant que vous avez implémenté les méthodes de rappel de cycle de vie pour MainActivity, procédez de la même manière pour SecondActivity.
- Ouvrez SecondActivity.
- En haut de la classe, ajoutez une constante pour la variable
LOG_TAG:
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
- Ajoutez les rappels de cycle de vie et les instructions de journalisation à la deuxième
Activity. (Vous pouvez copier et coller les méthodes de rappel depuisMainActivity.) - Ajoutez une instruction de journalisation à la méthode
returnReply()juste avant la méthodefinish():
Log.d(LOG_TAG, "End SecondActivity");
1.4 Observer les journaux pendant l'exécution de l'application
- Exécutez votre application.
- Cliquez sur l'onglet Logcat en bas d'Android Studio pour afficher le volet Logcat.
- Saisissez Activity dans le champ de recherche. Android Logcat peut être très long et encombré. Étant donné que la variable
LOG_TAGde chaque classe contient les motsMainActivityouSecondActivity, ce mot clé vous permet de filtrer les journaux pour n'afficher que ce qui vous intéresse.

Testez votre application et notez les événements de cycle de vie qui se produisent en réponse à différentes actions. Essayez plus particulièrement ces étapes :
- Utilisez l'application normalement (envoyez un message et répondez par un autre).
- Utilisez le bouton Retour pour passer de l'
Activitysecondaire à l'Activityprincipale. - Utilisez la flèche vers le haut dans la barre d'application pour passer de l'
Activitysecondaire à l'Activityprincipale. - Faites pivoter l'appareil sur dans les
Activityprincipale et secondaire à différents endroits de l'application et observez ce qui se passe dans le journal et à l'écran. - Appuyez sur le bouton Aperçu (bouton carré à droite de l'écran d'accueil), puis fermez l'application (appuyez sur X).
- Revenez à l'écran d'accueil et redémarrez votre application.
ASTUCE : Si vous exécutez votre application dans un émulateur, vous pouvez simuler la rotation avec Control+F11 ou Control+Function+F11.
Code de solution de la tâche 1
Les extraits de code suivants montrent le code de solution de la première tâche.
MainActivity
Les extraits de code suivants montrent le code ajouté dans MainActivity, mais pas la classe entière.
La méthode onCreate() :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Log the start of the onCreate() method.
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
}
Les autres méthodes de cycle de vie :
@Override
protected void onStart() {
super.onStart();
Log.d(LOG_TAG, "onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.d(LOG_TAG, "onPause");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(LOG_TAG, "onRestart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(LOG_TAG, "onResume");
}
@Override
protected void onStop() {
super.onStop();
Log.d(LOG_TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, "onDestroy");
}
SecondActivity
Les extraits de code suivants montrent le code ajouté dans SecondActivity, mais pas la classe entière.
En haut de la classe SecondActivity :
private static final String LOG_TAG = SecondActivity.class.getSimpleName();
La méthodereturnReply() :
public void returnReply(View view) {
String reply = mReply.getText().toString();
Intent replyIntent = new Intent();
replyIntent.putExtra(EXTRA_REPLY, reply);
setResult(RESULT_OK, replyIntent);
Log.d(LOG_TAG, "End SecondActivity");
finish();
}
Les autres méthodes de cycle de vie :
Identiques à MainActivity ci-dessus.
4. Tâche 2 : Enregistrer et restaurer l'état de l'instance Activity
En fonction des ressources système et du comportement des utilisateurs, chaque Activity de votre application peut être détruite et recréée bien plus fréquemment que vous ne le pensez.
Vous avez peut-être remarqué ce comportement dans la dernière section, lorsque vous avez fait pivoter l'appareil ou l'émulateur. La rotation de l'appareil est un exemple de modification de la configuration. Bien que la rotation soit la plus courante, toutes les modifications de configuration entraînent la destruction et la recréation de l'Activity actuelle comme si elle était nouvelle. Si vous ne prenez pas en compte ce comportement dans votre code, en cas de modification de la configuration, la mise en page de votre Activity peut revenir à son apparence par défaut et à ses valeurs initiales, et vos utilisateurs peuvent perdre leur place, leurs données ou l'état de leur progression dans votre application.
L'état de chaque Activity est stocké sous la forme d'une paire clé/valeur dans un objet Bundle appelé état d'instance Activity. Le système enregistre les informations sur l'état par défaut dans l'état d'instance Bundle juste avant l'arrêt de l'Activity, puis transmet ce Bundle à la nouvelle instance Activity pour la restaurer.
Pour éviter de perdre des données dans une Activity lorsqu'elle est détruite et recréée de manière inattendue, vous devez implémenter la méthode onSaveInstanceState(). Le système appelle cette méthode sur votre Activity (entre onPause() et onStop()) lorsqu'il est possible que l'Activity soit détruite et recréée.
Les données que vous enregistrez à l'état d'instance ne concernent que cette instance de cette Activity spécifique, pendant la session d'application en cours. Lorsque vous arrêtez et redémarrez une nouvelle session d'application, l'état de l'instance Activity est perdu et l'état Activity est rétabli à son apparence par défaut. Si vous devez enregistrer des données utilisateur entre les sessions d'application, utilisez des préférences partagées ou une base de données. Nous aborderons ces deux points ultérieurement dans un autre atelier.
2.1 Enregistrer l'état de l'instance Activity avec onSaveInstanceState()
Vous avez peut-être remarqué que la rotation de l'appareil n'affecte pas du tout l'état de l'Activity secondaire. En effet, la mise en page et l'état de l'Activity secondaire sont générés à partir de la mise en page et de l'Intent qui l'ont activée. Même si l'Activity est recréée, l'Intent est toujours présent et les données de cet Intent sont toujours utilisées chaque fois que la méthode onCreate() de l'Activity secondaire est appelée.
Vous pouvez également remarquer que, dans chaque Activity, le texte que vous avez saisi dans les éléments EditText d'un message ou d'une réponse est conservé, même lors de la rotation de l'appareil. En effet, les informations d'état de certains éléments View de votre mise en page sont automatiquement enregistrées en cas de modification de la configuration, et la valeur actuelle d'un EditText en fait partie.
Ainsi, le seul état Activity qui vous intéresse correspond aux éléments TextView pour l'en-tête de la réponse et le texte de la réponse dans l'Activity principale. Les deux éléments TextView sont invisibles par défaut. ils n'apparaissent que lorsque vous renvoyez un message à l'Activity principale à partir de l'Activity secondaire.
Dans cette tâche, vous allez ajouter du code pour conserver l'état d'instance de ces deux éléments TextView avec onSaveInstanceState().
- Ouvrez MainActivity.
- Ajoutez cette implémentation squelette de
onSaveInstanceState()à l'Activity, ou utilisez Code > Override Methods (Remplacer les méthodes) pour insérer un remplacement squelette.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
- Vérifiez si l'en-tête est actuellement visible et, le cas échéant, définissez cet état de visibilité sur l'état
Bundleà l'aide de la méthodeputBoolean()et de la clé"reply_visible".
if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
outState.putBoolean("reply_visible", true);
}
N'oubliez pas que l'en-tête et le texte de la réponse sont marqués comme invisibles jusqu'à ce qu'une réponse de l'Activity secondaire soit émise. Si l'en-tête est visible, des données de réponse doivent être enregistrées. Notez que seul l'état de visibilité nous intéresse. Il n'est pas nécessaire d'enregistrer le texte de l'en-tête, car il ne change jamais.
- Dans cette même vérification, ajoutez le texte de la réponse dans le
Bundle.
outState.putString("reply_text",mReplyTextView.getText().toString());
Si l'en-tête est visible, vous pouvez supposer que le message de réponse lui-même l'est également. Vous n'avez pas besoin de tester ni d'enregistrer l'état de visibilité actuel du message de réponse. Seul le texte du message passe à l'état Bundle avec la clé "reply_text".
Vous n'enregistrez que l'état des éléments View qui peuvent changer après la création de l'Activity. Les autres éléments View de votre application (EditText et Button) peuvent être recréés à tout moment à partir de la mise en page par défaut.
Notez que le système enregistre l'état de certains éléments View, tels que le contenu d'EditText.
2.2 Restaurer l'état de l'instance Activity dans onCreate()
Une fois que vous avez enregistré l'état de l'instance Activity, vous devez également le restaurer lors de la recréation de l'Activity. Vous pouvez le faire dans onCreate() ou en implémentant le rappel onRestoreInstanceState(), qui est appelé après onStart() après la création de l'Activity.
La plupart du temps, le meilleur endroit pour restaurer l'état de l'Activity est dans onCreate(), afin de s'assurer que l'UI, y compris l'état, est disponible dès que possible. Il est parfois pratique de le faire dans onRestoreInstanceState() une fois l'initialisation terminée ou pour permettre aux sous-classes de décider d'utiliser ou non votre implémentation par défaut.
- Dans la méthode
onCreate(), une fois les variablesViewinitialisées avecfindViewById(), ajoutez un test pour vous assurer quesavedInstanceStaten'est pas une valeur nulle.
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
// Restore the state.
if (savedInstanceState != null) {
}
Lorsque votre Activity est créée, le système transmet l'état Bundle à onCreate() comme seul argument. La première fois qu'onCreate() est appelé et que votre application démarre, le Bundle est null. Il n'existe aucun état existant la première fois que votre application démarre. Les appels suivants à onCreate() comportent un bundle contenant les données que vous avez stockées dans onSaveInstanceState().
- Dans cette vérification, récupérez la visibilité actuelle (true ou false) du
Bundleà l'aide de la clé"reply_visible".
if (savedInstanceState != null) {
boolean isVisible =
savedInstanceState.getBoolean("reply_visible");
}
- Ajoutez un test en dessous de cette ligne précédente pour la variable isVisible.
if (isVisible) {
}
Si une clé reply_visible existe à l'état Bundle (et si isVisible est donc true), vous devrez restaurer l'état.
- Dans le test
isVisible, rendez l'en-tête visible.
mReplyHeadTextView.setVisibility(View.VISIBLE);
- Obtenez le message de réponse textuel du
Bundleavec la clé"reply_text", puis définissez la réponseTextViewpour qu'elle affiche cette chaîne.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
- Rendez également visible l'élément
TextViewde la réponse :
mReplyTextView.setVisibility(View.VISIBLE);
- Exécutez l'application. Essayez de faire pivoter l'appareil ou l'émulateur pour vous assurer que le message de réponse (le cas échéant) reste affiché à l'écran une fois l'
Activityrecréée.
Code de solution de la tâche 2
Les extraits de code suivants montrent le code de solution de cette tâche.
MainActivity
Les extraits de code suivants montrent le code ajouté dans MainActivity, mais pas la classe entière.
La méthode onSaveInstanceState() :
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// If the heading is visible, message needs to be saved.
// Otherwise we're still using default layout.
if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
outState.putBoolean("reply_visible", true);
outState.putString("reply_text",
mReplyTextView.getText().toString());
}
}
La méthode onCreate() :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(LOG_TAG, "-------");
Log.d(LOG_TAG, "onCreate");
// Initialize all the view variables.
mMessageEditText = findViewById(R.id.editText_main);
mReplyHeadTextView = findViewById(R.id.text_header_reply);
mReplyTextView = findViewById(R.id.text_message_reply);
// Restore the saved state.
// See onSaveInstanceState() for what gets saved.
if (savedInstanceState != null) {
boolean isVisible =
savedInstanceState.getBoolean("reply_visible");
// Show both the header and the message views. If isVisible is
// false or missing from the bundle, use the default layout.
if (isVisible) {
mReplyHeadTextView.setVisibility(View.VISIBLE);
mReplyTextView.setText(savedInstanceState
.getString("reply_text"));
mReplyTextView.setVisibility(View.VISIBLE);
}
}
}
Le projet complet :
Projet Android Studio : TwoActivitiesLifecycle
5. Défi de codage
Défi : Créez une application de liste de courses simple, avec une activité principale pour la liste créée par l'utilisateur et une activité secondaire pour une liste d'articles courants.
- L'activité principale doit contenir la liste à compiler, qui doit être composée de 10 éléments
TextViewvides. - Un bouton Ajouter un article dans l'activité principale lance une activité secondaire, qui répertorie les articles courants (fromage, riz, pommes, etc.). Utilisez les éléments
Buttonpour afficher les articles. - Si l'utilisateur sélectionne un article, il revient à l'activité principale. Un élément
TextViewvide est mis à jour pour inclure l'article choisi.
Utilisez un Intent pour transmettre des informations d'une Activity à une autre. Assurez-vous que l'état actuel de la liste de courses est enregistré lorsque l'utilisateur fait pivoter l'appareil.
6. Résumé
- Le cycle de vie d'une activité est un ensemble d'états par lesquels passe une
Activity, depuis sa création jusqu'à sa fin lorsque le système Android récupère les ressources allouées à cetteActivity. - Lorsque l'utilisateur passe d'une
Activityà une autre, et quand il bascule de votre application à une autre, chaqueActivitychange d'état dans le cycle de vie d'uneActivity. - Chaque état du cycle de vie de l'
Activitypossède une méthode de rappel correspondante que vous pouvez remplacer dans la classe de votreActivity. - Les méthodes de cycle de vie sont
onCreate(),onStart(),onPause(),onRestart(),onResume(),onStop()etonDestroy(). - Le remplacement d'une méthode de rappel de cycle de vie vous permet d'ajouter le comportement qui se produit lorsque votre
Activitypasse à cet état. - Vous pouvez ajouter des méthodes de remplacement squelettes à vos classes dans Android Studio via Code > Override (Code > Remplacer).
- Les modifications de configuration de l'appareil telles que la rotation entraînent la destruction et la recréation de l'
Activity, comme si elle était nouvelle. - Une partie de l'état de l'
Activityest conservée lors d'une modification de la configuration, y compris les valeurs actuelles des élémentsEditText. Pour toutes les autres données, vous devez les enregistrer vous-même de façon explicite. - Enregistrez l'état de l'instance
Activitydans la méthodeonSaveInstanceState(). - Les données d'état de l'instance sont stockées sous forme de paires clé/valeur simples dans un
Bundle. Utilisez les méthodesBundlepour insérer des données et les extraire duBundle. - Restaurez l'état de l'instance dans
onCreate()(méthode privilégiée) ouonRestoreInstanceState().
7. Concept associé
La documentation sur le concept associé se trouve dans la section 2.2 : Cycle de vie et état d'une activité.
8. En savoir plus
Documentation Android Studio :
Documentation pour les développeurs Android :
9. Devoirs
Cette section répertorie les devoirs possibles pour les élèves qui suivent cet atelier de programmation dans le cadre d'un cours animé par un enseignant. Il revient à l'enseignant d'effectuer les opérations suivantes :
- Attribuer des devoirs si nécessaire
- Indiquer aux élèves comment rendre leurs devoirs
- Noter les devoirs
Les enseignants peuvent utiliser ces suggestions autant qu'ils le souhaitent, et ne doivent pas hésiter à attribuer d'autres devoirs aux élèves s'ils le jugent nécessaire.
Si vous suivez cet atelier de programmation par vous-même, n'hésitez pas à utiliser ces devoirs pour tester vos connaissances.
Créer et exécuter une application
- Créez une application avec une mise en page contenant un compteur
TextView, unButtonpour augmenter le compteur et un élémentEditText. À titre d'exemple, consultez la capture d'écran ci-dessous. Vous n'avez pas besoin de dupliquer précisément la mise en page. - Ajoutez un gestionnaire de clics pour le
Button, qui augmente le compteur. - Exécutez l'application et augmentez le compteur. Saisissez du texte dans
EditText. - Faites pivoter l'appareil. Notez que le compteur est réinitialisé, mais pas
EditText. - Implémentez
onSaveInstanceState()pour enregistrer l'état actuel de l'application. - Mettez à jour
onCreate()pour restaurer l'état de l'application. - Assurez-vous que l'état de l'application est conservé lorsque vous faites pivoter l'appareil.

Répondre aux questions suivantes
Question 1
Si vous exécutez l'application des devoirs avant d'implémenter onSaveInstanceState(), que se passe-t-il si vous faites pivoter l'appareil ? Choisissez une réponse :
EditTextne contient plus le texte que vous avez saisi, mais le compteur est conservé.- Le compteur est réinitialisé et
EditTextne contient plus le texte que vous avez saisi. - Le compteur est réinitialisé et le contenu de
EditTextest conservé. - Le compteur et le contenu de
EditTextsont conservés.
Question 2
Quelles méthodes de cycle de vie d'une Activity sont appelées lorsqu'un changement de configuration de l'appareil (comme la rotation) se produit ? Choisissez une réponse :
- Android arrête immédiatement votre
Activityen appelantonStop(). Votre code doit redémarrer l'Activity. - Android arrête votre
Activityen appelantonPause(),onStop()etonDestroy(). Votre code doit redémarrer l'Activity. - Android arrête votre
Activityen appelantonPause(),onStop()etonDestroy(), puis la redémarre, en appelantonCreate(),onStart()etonResume(). - Android appelle immédiatement
onResume().
Question 3
Quand, dans le cycle de vie de l'Activity, onSaveInstanceState() est-il appelé ? Choisissez une réponse :
onSaveInstanceState()est appelé avant la méthodeonStop().onSaveInstanceState()est appelé avant la méthodeonResume().onSaveInstanceState()est appelé avant la méthodeonCreate().onSaveInstanceState()est appelé avant la méthodeonDestroy().
Question 4
Quelles méthodes de cycle de vie d'une Activity sont les plus adaptées pour enregistrer des données avant la fin ou la destruction de l'Activity ? Choisissez une réponse :
onPause()ouonStop()onResume()ouonCreate()onDestroy()onStart()ouonRestart()
Envoyer votre application pour qu'elle soit notée
Conseils pour les notations
Vérifiez que l'application dispose des fonctionnalités suivantes :
- Elle affiche un compteur, un
Buttonpour l'augmenter et un élémentEditText. - Cliquer sur le
Buttonpermet d'augmenter le compteur de 1. - Lors de la rotation de l'appareil, les états du compteur et de
EditTextsont conservés. - L'implémentation de
MainActivity.javautilise la méthodeonSaveInstanceState()pour stocker la valeur du compteur. - L'implémentation d'
onCreate()teste l'existence duBundleoutState. Si ceBundleexiste, la valeur du compteur est restaurée et enregistrée dansTextView.
10. Atelier de programmation suivant
Pour accéder à l'atelier de programmation suivant du cours Principes de base du développement Android (V2), consultez Ateliers de programmation pour le cours Principes de base du développement Android (V2).
Pour obtenir un aperçu du cours, y compris des liens vers les chapitres concernant les concepts, les applications et les diapositives, consultez Principes de base du développement Android (version 2).