2010-11-09 14 views
10

Uso el contexto de la aplicación de mi aplicación Android como área de almacenamiento para la información del "estado actual" de mi aplicación.¿Alguna vez se destruye el contexto de la aplicación Android?

Estoy descubriendo que en el campo, esta información desaparece en los dispositivos de algunas personas y causa varias NullPointerExceptions, ya que espero que los datos estén allí cuando la aplicación se reanude y comience a reconstruir las actividades necesarias.

Esto sucede generalmente cuando el usuario pulsa "Inicio", hace otra cosa, luego regresa a la aplicación - intenta volver a donde estaba antes, pero el contexto de la aplicación ha perdido misteriosamente todo lo guardado anteriormente información de estado (en mi caso, algunos enteros y algunas cadenas).

Sé que esta es una pregunta muy vaga, pero ¿hay algún caso (aparte del usuario que utiliza "atrás" para retroceder completamente fuera de la aplicación) donde el Contexto de la aplicación se destruye completamente aunque la aplicación no finalice?

¿Existe alguna forma mejor de mantener la información de estado persistente?

Respuesta

4

Sí, es posible que la Aplicación se elimine y se reinicie si el usuario abandona la aplicación por un tiempo. Es posible que desee leer esta sección en processes and lifecycles.

Debería encontrar un lugar apropiado para guardar el estado en una tienda persistente. Si solo se trata de unos pocos enteros y cadenas, debería ser bastante sencillo guardarlos en las preferencias compartidas a medida que cambian. Ver data storage - shared preferences.

+0

Me di cuenta de eso. ¿Hay algo específico que pueda hacer para * forzar * esta situación (mi aplicación muerta) para poder reproducirla? Aparentemente ocurre bastante en el campo, pero * nunca * he podido reproducirlo en mi Nexus One localmente. En esta situación, onTerminate() llama al proceso de solicitud. – user435210

+0

@ user435210 1. Mire la página con los ciclos de vida de la aplicación: explica casi todo lo que necesita saber para administrar el ciclo de vida de su aplicación. 2. Puedes eliminar tu aplicación usando la opción "Configuración/Aplicaciones/Administrar aplicaciones/YourApp", o usando cualquiera de las aplicaciones que se pueden descargar en el mercado de Android. –

+1

Si quieres reproducirlo de una manera "amigable" (no forzar la muerte), me gustaría ir a casa, luego iniciar todas las aplicaciones que puedas encontrar en tu sistema para que Android se vea forzado a cerrar el tuyo. Como se indica en la documentación, se puede llamar aTerminate, pero esto no es una garantía. Si, por ejemplo, su aplicación está cerrada por una aplicación de matar a todas las aplicaciones, lo más probable es que no se invoque. –

Cuestiones relacionadas