J’essaie d’enregistrer et de restaurer l’état d’un en utilisant les méthodes
et `` .
Le problème est qu’il n’entre jamais le `` méthode. Quelqu'un peut-il expliquer à moi pourquoi il en est ?
J’essaie d’enregistrer et de restaurer l’état d’un en utilisant les méthodes
et `` .
Le problème est qu’il n’entre jamais le `` méthode. Quelqu'un peut-il expliquer à moi pourquoi il en est ?
Habituellement, vous devez restaurer votre état en onCreate()
. Il est possible de le restaurer en onRestoreInstanceState()
, mais n'est pas très commun. (onRestoreInstanceState()
est appelée après l' onStart()
, alors que onCreate()
avant onStart()
.
Utiliser le placez les méthodes pour stocker des valeurs en onSaveInstanceState()
:
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
icicle.putLong("param", value);
}
Et de restaurer les valeurs en onCreate()
:
public void onCreate(Bundle icicle) {
if (icicle != null){
value = icicle.getLong("param");
}
}
Vous n'avez pas à stocker des vues des états, car ils sont stockés automatiquement.
onRestoreInstanceState()
est appelé seulement pour recréer de l'activité après qu'il a été tué par le système d'exploitation. Une telle situation se produire lorsque:
onRestoreInstanceState()
sera appelée.En revanche: si vous êtes dans votre activité et vous frappez Back
bouton sur l'appareil, votre activité est fini()ed (c'est à dire penser comme à la sortie de l'application de bureau) et la prochaine fois que vous démarrez votre application, elle est en route "frais", c'est à dire sans état enregistré parce que vous avez quitté il quand vous frappez Back
.
Autre source de confusion est que lorsqu'une application perd le focus à une autre application onSaveInstanceState()
est appelée, mais lorsque vous revenez à votre application onRestoreInstanceState()
ne peut pas être appelé. C'est le cas décrit dans la question d'origine, c'est à dire si votre activité n'a PAS été tué au cours de la période au cours de laquelle l'activité a été à l'avant onRestoreInstanceState()
ne sera PAS appelé parce que votre activité est assez bien "vivant".
Dans l'ensemble, comme indiqué dans la documentation pour l' onRestoreInstanceState()
:
La plupart des implémentations seront tout simplement utiliser onCreate(Bundle) pour restaurer leur de l'état, mais il est parfois commode de le faire ici, après tout, de la l'initialisation a été fait, ou pour permettre à des sous-classes pour décider si pour utiliser votre défaut de mise en œuvre. L'implémentation par défaut de cette méthode effectue une restauration de vue de l'état qui avait été précédemment gelé par onSaveInstanceState(Bundle).
Comme je l'ai lu: Il n'y a aucune raison de remplacer onRestoreInstanceState()
, sauf si vous êtes sous-classement Activity
et il est prévu que quelqu'un va votre sous-classe sous-classe.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.