2011-05-20 32 views
5

Tengo una aplicación que tiene notificaciones push en tiempo real habilitadas. Así que mi consulta es cada vez que cualquier usuario intenta matar a mi aplicación utilizando "Advance Task Killer", mi aplicación entra en estado indefinido.¿Qué sucede cuando se "mata" la aplicación de Android?

Indefinido Estado: Lo que quiero decir es que mi aplicación no se termina por completo. La pantalla tiene datos en un estado inconsistente.

Entonces, ¿hay alguna manera en la que pueda llevar a un usuario a la pantalla de inicio de sesión cada vez que se mata una aplicación? Para que el usuario no vea ningún estado indefinido.

También quiero saber qué pasa con mis estados de la aplicación después de que muera para que pueda solucionar el problema.

Ayuda apreciada.

+0

¿Qué sucede cuando se "mata" la aplicación de Android? "Muere" – ariefbayu

+0

¿Estás utilizando procesos remotos? En otras palabras, ¿tiene alguna instancia de 'Servicio' en su AndroidManifest.xml marcado con la opción' android: process = ": remote" '? – Femi

+0

@femi no no tengo android: proceso de atributo en mi manifiesto – user755499

Respuesta

4

Depende de la versión de la plataforma. Antes de 2.2, aplicaciones de terceros como ATK podían usar una API que hacía lo mismo que el botón "Parar Forzar" en la administración de aplicaciones: esto mata todos los procesos de la aplicación, elimina todas las tareas/actividades, cancela todas las alarmas, elimina todas las notificaciones, detiene todos los servicios, etc. Básicamente hace que la aplicación no se ejecute igual que si primero se instaló, excepto que sus datos persistentes están intactos.

Huelga decir que esto tiende a causar un mal funcionamiento de las aplicaciones, por lo que a partir de 2.2 otras aplicaciones como ATK ya no pueden hacer esto en su aplicación. La API que estaban usando ahora solo es capaz de hacer lo mismo que hace el destructor de memoria: elimine los procesos de la aplicación, pero solo si están en segundo plano en un estado imposible. Puede hacer no más que el destructor de memoria normal, por lo que a partir de 2.2 si su aplicación se está comportando mal debido a una aplicación como ATK, entonces esto expone un error real en la aplicación que los usuarios encontrarán a través del uso normal de su dispositivo.

+0

Mi aplicación minSdk es 7 y la versión de ATK es v1.9.6 build 76 y sí, está matando a la aplicación, porque cada vez que mi aplicación muere de ATK su limpieza todo los datos de mi caché causan el estado indefinido de mi aplicación, pero con el botón "Forzar parada" en la administración de aplicaciones, mi aplicación lleva al usuario de vuelta a la pantalla de inicio de sesión, que es el comportamiento esperado. Entonces, ¿es un error ATK o tengo que manejarlo de mi lado? – user755499

+0

No está matando la aplicación, está matando el proceso. El sistema hará esto cuando necesite memoria. Necesitas lidiar con tu proceso siendo asesinado cuando está en segundo plano. Consulte aquí para obtener una descripción general de los estados en los que puede encontrarse un proceso y cuándo se puede eliminar: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html#Lifecycle – hackbod

Cuestiones relacionadas