2010-03-19 18 views
10

De la documentación de android.app.Application:android.app.Application subclase, onTerminate no está siendo llamado

Clase base para aquellos que necesitan para mantener el estado de aplicación global.

Estoy usando mi propia subclase para mantener un objeto que estoy usando para consultar un servidor. Además de la documentación:

onTerminate() llama cuando la aplicación está parando.

Sin embargo, onTerminate() en mi clase nunca se llama. Presiono el botón Atrás mientras veo mi actividad principal, y todo parece cerrarse. Se llama al método onDestroy() de mi actividad principal y isFinishing() devuelve verdadero, pero el método android.app.ApplicationonTerminate() nunca se llama.

¿Por qué es esto? ¿Qué me estoy perdiendo? ¿Hay algo que lo mantiene abierto?

+0

Trate de usar la galería, navegador, iniciar un juego pesado para que la plataforma carecería de recursos. Todavía no llamado? – yanchenko

+0

Intenta instalar un manejador de señal para SIGKILL desde NDK. No estoy seguro si esto funcionará, y no podrá hacer mucho en eso de todos modos ... –

Respuesta

15

Esto podría estar relacionado con el hecho de que, aunque salga de la aplicación, el proceso aún se ejecuta en segundo plano, por lo que al reiniciar la aplicación se usaría el mismo proceso.

También los javadocs afirman que no se debe confiar en el código onTerminate para llamar.

Nota: nunca dependa de se llama este método; en muchos casos, un proceso de solicitud innecesario simplemente será destruido por el kernel sin ejecutar ningún código de aplicación .

+9

Tenga en cuenta que los documentos se han actualizado para ser más explícitos: nunca se llamará a este archivo en un dispositivo Android de producción. – Tom

Cuestiones relacionadas