Els estats d'interfície d'Android son importants en tant que les Activity
i les View
es destrueixen i es recreen de forma automàtica per part del sistema operatiu en diverses circumstàncies com:
La destrucció i recreació dels objectes es descriu en el cicle de vida o lifecycle de les Activitats.
La informació de la UI és volàtil i es perd o reinicia en la recreació, el què pot suposar una destrucció de les dades temporals que hi ha contingudes, per exemple, un missatge a mig redactar en una aplicació de missatgeria quan es rota el dispositiu.
Per solventar aquest problema es disposa de diversos mecanismes per guardar i recuperar l'estat de la UI:
Es poden guardar variables primitives o objectes simples com Strings
en l'objecte de tipusBundle
(i que acostuma a dir-se savedInstanceState
) que ens proporciona el propi Android framework.
Revisa com enregistrar i recuperar dades de la UI en la documentació oficial del cicle de vida d'Android.
Una implementació resumida en la mateixa documentació.
Bàsicament es tracta de tenir-ho en compte als mètodes derivats d'Activity
:
onSaveInstanceState(Bundle)
: una nova callback que ens permetrà guardar les dades de la UI en un objecte Bundle
.onCreate(Bundle)
: quan recreem l'Activity
cal tenir-ho en compte per recuperar les dades.onRestoreInstanceState(Bundle)
: enlloc de recuperar les dades al onCreate
, es pot fer en aquest altre mètode que es crida després de onCreate
i onStart
.
Revisa l'article Android Fragments per exercitar aquest mode.