La figure suivante (tirée de la documentation officielle ) décrit le cycle de vie bien connu d'une activité Android:
Par contre, lorsque l'activité est détruite par le système (par exemple parce que la mémoire doit être récupérée), l'état de l'activité est parfois automatiquement sauvegardé et restauré au moyen des méthodes onSaveInstanceState()
et onRestoreInstanceState()
, comme illustré par la figure suivante (également du document officiel ):
Je suis conscient que ce onSaveInstanceState()
n'est pas toujours appelé lorsqu'une activité est sur le point d'être détruite. Par exemple, s'il est détruit parce que l'utilisateur a appuyé sur le bouton «retour», l'état d'activité n'est pas conservé. Mais dans les cas où l'état est enregistré et restauré, et onSaveInstanceState()
/ onRestoreInstanceState()
est appelé, quand exactement sont-ils appelés ?
Par exemple, selon les chiffres ci-dessus, onRestoreInstanceState()
peut être appelé avant onStart()
, ou après onStart()
mais avant onResume()
ou après onResume()
. De même, plusieurs possibilités existent pour onSaveInstanceState()
. Alors, quand sont-ils appelés exactement?
Idéalement, je voudrais voir un diagramme combiné montrant les états du cycle de vie de l'activité et les méthodes de sauvegarde / restauration , si cela existe.
la source
Réponses:
Selon la documentation :
la source
Selon doc1 et doc2
la source
En plus des réponses déjà publiées, il y a un changement subtil introduit dans Android P, à savoir:
Source: documents
Quant à savoir pourquoi ce changement est introduit, voici la réponse:
Source: documents
la source
Do you know how will behave app that target P but runs on lower api?
tant que l'application est exécutée sur, disons M, la version d'Android que cet appareil possède ne contient pas de modifications, qui sont introduites dans P, ce qui signifie que peu importe que vous ayez spécifié la cible,P
vous ne verrez pas différent pour les appareils pré-P. J'espère que ça répond à ta question.Ceci est une information supplémentaire pour onSaveInstanceState (Bundle)
à partir de documents
C'est donc l'implémentation par défaut pour ..
la source
// Ce rappel est appelé uniquement lorsqu'il existe une instance enregistrée précédemment enregistrée à l'aide de // onSaveInstanceState (). Nous restaurons un état dans onCreate () tandis que nous pouvons éventuellement restaurer // un autre état ici, éventuellement utilisable après la fin de onStart (). // Le bundle savedInstanceState est le même que celui utilisé dans onCreate ().
la source