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
Activity
et unIntent
, et interagir facilement avec ces éléments
Points abordés
- Comment fonctionne le cycle de vie d'une
Activity
- Quand une
Activity
dé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
Activity
lors 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
Activity
afin d'inclure des instructions de journalisation - Observer les changements d'état pendant l'exécution de votre application et lorsque vous interagissez avec chaque
Activity
de votre application - Modifier votre application pour conserver l'état d'instance d'une
Activity
recréé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'
Activity
est 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_TAG
de chaque classe contient les motsMainActivity
ouSecondActivity
, 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'
Activity
secondaire à l'Activity
principale. - Utilisez la flèche vers le haut dans la barre d'application pour passer de l'
Activity
secondaire à l'Activity
principale. - Faites pivoter l'appareil sur dans les
Activity
principale 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 variablesView
initialisées avecfindViewById()
, ajoutez un test pour vous assurer quesavedInstanceState
n'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
Bundle
avec la clé"reply_text"
, puis définissez la réponseTextView
pour qu'elle affiche cette chaîne.
mReplyTextView.setText(savedInstanceState.getString("reply_text"));
- Rendez également visible l'élément
TextView
de 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'
Activity
recréé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
TextView
vides. - 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
Button
pour afficher les articles. - Si l'utilisateur sélectionne un article, il revient à l'activité principale. Un élément
TextView
vide 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, chaqueActivity
change d'état dans le cycle de vie d'uneActivity
. - Chaque état du cycle de vie de l'
Activity
possè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
Activity
passe à 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'
Activity
est 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
Activity
dans 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éthodesBundle
pour 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
, unButton
pour 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 :
EditText
ne contient plus le texte que vous avez saisi, mais le compteur est conservé.- Le compteur est réinitialisé et
EditText
ne contient plus le texte que vous avez saisi. - Le compteur est réinitialisé et le contenu de
EditText
est conservé. - Le compteur et le contenu de
EditText
sont 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
Activity
en appelantonStop()
. Votre code doit redémarrer l'Activity
. - Android arrête votre
Activity
en appelantonPause()
,onStop()
etonDestroy()
. Votre code doit redémarrer l'Activity
. - Android arrête votre
Activity
en 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
Button
pour l'augmenter et un élémentEditText
. - Cliquer sur le
Button
permet d'augmenter le compteur de 1. - Lors de la rotation de l'appareil, les états du compteur et de
EditText
sont conservés. - L'implémentation de
MainActivity.java
utilise la méthodeonSaveInstanceState()
pour stocker la valeur du compteur. - L'implémentation d'
onCreate()
teste l'existence duBundle
outState
. Si ceBundle
existe, 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).