2016-03-17 1 views
1

J'ai implémenté onSaveInstanceState et onRestoreInstanceState dans mon activité android.Comment puis-je forcer un appel à onSaveInstanceState

Ceux-ci semblent fonctionner OK, mais j'aimerais sauver explicitement l'état de l'instance lorsque certaines choses se produisent (par exemple, lorsque l'utilisateur appuie sur un bouton) dans le cas où l'application se bloque, ou je mettre fin via le débogueur

Je peux appeler la méthode évidemment, mais cela ne fournit pas le Bundle correct ou quoi que ce soit d'autre.

J'ai regardé autour de moi, mais je ne vois aucun moyen de le faire. C'est possible? Si non, quelqu'un peut-il offrir une solution décente pour sauver l'état d'activité à des points spécifiques en cas de panne/résiliation?

Merci

+3

Enregistrer l'ensemble dans les préférences partagées? – Wazaaaap

+1

Avez-vous essayé de garder un Bundle comme champ? –

Répondre

2

Bundles ne sont stockés dans la mémoire, ce qui signifie que même si vous parvenez à mettre les données dans le Bundle, il sera parti si votre application se bloque.

Je vous suggère d'utiliser onSaveInstanceState pour ce pourquoi il a été conçu - en restaurant l'état Activity dans un processus actif. Si vous souhaitez conserver certaines informations afin qu'elles ne soient pas perdues si l'application se bloque, vous devez utiliser l'un des correctifs suivants: storage options.

Idéalement, vous auriez une classe de modèle pour les données que vous affichez. Vous pouvez conserver le modèle en utilisant SQLite et certains DAO library. Lorsque vous faites cela, vous pouvez ensuite restaurer à partir de la base de données dans onCreate de votre Activity.

Selon la complexité de l'information, vous pouvez également choisir Shared Preferences. Si vous n'avez que quelques paires de valeurs clés, c'est un bon choix et vous n'avez pas besoin d'utiliser des modèles.