Quand le paquet savedInstanceState est-il réellement utilisé?
Est-ce que quelqu'un connaît une liste exhaustive de quand le paquet savedInstanceState sera utilisé dans une activité?
Je sais qu'il est utilisé lorsque l'orientation de l'appareil change. Cependant, il ne semble pas être utilisé lorsque l'utilisateur force ferme l'application à partir des paramètres Android, mais cela peut être dû à quelque chose dans mon code.
Quels sont les autres cas?
Pour être clair, par" Utilisé " je veux dire quand onCreate()
est appelé, le paquet savedInstanceState n'est pas null et contient les données I passé dedans la dernière fois que onSaveInstanceState()
a été appelé.
2 réponses
Il est utilisé lorsque l'activité est terminée de force par le système d'exploitation (ex: lorsque votre activité est en arrière-plan et qu'une autre tâche a besoin de ressources). Lorsque cela se produit, onSaveInstanceState(Bundle outstate)
sera appelé et il appartient à votre application d'ajouter les données d'état que vous souhaitez enregistrer dans outstate
.
Lorsque l'utilisateur reprend votre Activité, onCreate(Bundle savedInstanceState)
est appelée et savedInstanceState
sera non nulle si votre Activité est terminée dans un scénario décrit ci-dessus. Votre application peut ensuite récupérer les données de savedInstanceState
et régénérer votre activité indiquez comment c'était quand l'utilisateur l'a vu pour la dernière fois.
Fondamentalement dans onCreate
, Quand savedInstanceState
est nul, cela signifie que c'est un lancement "frais" de votre activité. Et quand il est non nul (si votre application a enregistré les données dans onSaveInstanceState(...)
, cela signifie que l'État de L'activité doit être recréé.
onSaveInstanceState
est utilisé pour stocker des données seulement pour la vie de l'application (c'est à dire temporairement)
Les données dans la mémoire jusqu'à ce que l'application est en vie, en d'autres termes, cette perte de données lorsque l'application se ferme, donc dans votre cas lorsque vous forcer la fermeture de l'application onSaveInstanceState
n'est pas utilisé.
Il ne peut être appelé que lorsque vous effectuez des opérations alors que votre application est encore active, par exemple lorsque vous modifiez l'orientation de l'écran, l'activité est toujours intacte, donc onSaveInstanceState
est appelée.
Cependant si vous souhaitez stocker en permanence les données que vous devez utiliser SharedPreferences
et SQLite database
.