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é.

25
demandé sur howettl 2012-03-24 01:40:24

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éé.

39
répondu triad 2012-03-23 21:48:35

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.

20
répondu Arif Nadeem 2012-03-23 21:58:47