2009-10-26 9 views
7

Tengo una aplicación para Android con MUCHAS actividades, piense en algo así como un libro donde cada página es una actividad nueva. El usuario puede hacer cambios en cada actividad, por ejemplo resaltar ciertos textos con marcadores de diferentes colores, etc. y es crucial que recuerde esta información siempre y cuando la aplicación se mantenga activa (y no quiero/necesito recordar ninguna de esto cuando no lo es). Como entiendo, el mejor mecanismo para almacenar este tipo de información es a través de onSaveInstanceState(Bundle outState) y onCreate(Bundle)/onRestoreInstanceState(Bundle) en lugar de, digamos, el mecanismo de Preferencias. Mi único problema es que el usuario puede navegar hacia atrás a páginas anteriores (Actividades) y la única manera que conozco de lograr esto es llamando al finish(), que por supuesto mata la actividad actual sin llamar al onSaveInstanceState(Bundle outState) e incluso si lo llamó, la próxima vez Lanzaría una actividad que representara esa página, sería una instancia completamente nueva. Entonces mi pregunta es: ¿hay alguna manera de volver a la actividad anterior sin llamar al finish()? o, ¿hay una mejor manera de guardar esta información? tal vez a través de variables estáticas?Android: Regrese a la actividad anterior sin llamar a finish()

Gracias!

P.S. Sé que también podría implementar mi aplicación de manera diferente para que no todas las páginas tengan su propia actividad, pero esta no es la respuesta que estoy buscando.

Respuesta

2

Tuve exactamente el mismo problema y después de pensar y probar mucho, en mi humilde opinión, encontré la solución más factible. Heredé la Actividad y agregué un método estático para matar si existe solo. Entonces, en lugar de matar la actividad cada vez que sale. Lo mato cuando lo llaman de nuevo. Por ejemplo,

MyActivity.killIfExists(); 
startActivity(new Intent(this, MyActivity.class)); 

Así que, la aplicación será siempre Singleton y guardar su estado con onSaveInstanceState.

Cuestiones relacionadas