2010-01-09 7 views
6

Estamos diseñando una aplicación de Android que tiene varias actividades que funcionan de forma similar a un asistente: el usuario debe pasar de la actividad # 1 a la actividad # 5 para llegar a la actividad final (# 6).¿Cuáles son las mejores prácticas en Android para mantener los datos entre las actividades elimina/reinicia durante toda la sesión de la aplicación?

Como sabemos que una actividad puede terminar repentinamente por el sistema operativo con poca memoria utilizamos la clase de aplicación como almacenamiento estático para mantener los datos que el usuario ingresa en las actividades de "asistente" y otros datos que nuestra aplicación necesita para toda la sesión.

Desafortunadamente, hemos descubierto que este enfoque falla, parece que la instancia de la clase de aplicación también puede ser eliminada por el sistema operativo (esto se descubrió específicamente en Android 1.6 versus 1.5). ¿Nuestras expectativas son erróneas en este enfoque (creemos que la instancia de la clase de aplicación siempre vive para toda la sesión de la aplicación)?

Así que la pregunta es: ¿cuáles son las mejores prácticas en Android para mantener los datos entre las actividades deathes/reinicia para toda la sesión de la aplicación?

Respuesta

9

Estamos diseñando una aplicación para Android que tiene varias actividades que se trabaja en un asistente como el modo de usuario - deberán trasladarse de la actividad # 1 a # 5 actividad para llegar a la actividad final (# 6).

¿Estás seguro de que deberías implementarlos como actividades separadas? ¿Por qué no una sola actividad, usando ViewFlipper o algo para moverse entre los estados del asistente?

son nuestras expectativas mal en este enfoque (creemos clase de aplicación ejemplo, viviendo siempre para toda la sesión aplicación)?

La instancia de la clase de aplicación siempre vive para toda la sesión de la aplicación, AFAIK. Una vez que todas sus actividades sean destruidas, la Aplicación también será destruida.

Entonces la pregunta es - ¿Cuál es la mejor prácticas en Android para mantener los datos entre actividades deathes/reinicia para toda la sesión de la aplicación?

  1. Use un Service - si esto es expulsado de RAM, empezar de nuevo desde cero
  2. Usar una base de datos
  3. Usar un archivo

O, mejor: Don' usar múltiples actividades en este caso. Un asistente es una sola cosa lógica; trátelo como tal y conviértalo en una actividad única. Persista su estado a través del onSaveInstanceState(), y está listo.

+2

Me gusta mucho esta respuesta. Puede ser más limpio implementar esto como una actividad, sin embargo, debe considerar situaciones como el botón Atrás, que no lo llevará a la "pantalla" anterior de forma predeterminada. Sí, solo asuma que su proceso (y, por lo tanto, los objetos del marco dentro de él, como la aplicación) pueden ser eliminados en cualquier momento. Usar un servicio puede ayudar, pero eso simplemente puede retrasar lo inevitable. Estas preguntas frecuentes pueden ser útiles: http://developer.android.com/guide/appendix/faq/framework.html#3 – James

0

Si los datos que el usuario ingresa y necesita almacenar son solo un conjunto de primitivos, simplemente puede usar SharedPreferences como almacenamiento persistente.

Cuestiones relacionadas