android - programa - servicios de google play sigue sin funcionar
¿Cómo determinar si la aplicación de Android se cerró forzosamente? (2)
Tal vez podría escribir un archivo al inicio que elimine al apagar. Si la aplicación se inicia y este archivo está presente, puede concluir que se cerró forzosamente.
Necesito determinar si mi aplicación se cerró forzosamente, se colgó o terminó normalmente. Mi pregunta es: ¿cómo harías tal cosa en el entorno Android? Manejar excepciones es fácil, solo necesito reemplazar Thread.setDefaultExceptionHandler. La parte difícil es: ¿cómo puedo distinguir una fuerza de cierre cerrado de una "normal" (como retroceso, o botón de inicio + mucho tiempo, etc.)?
El motivo es: podemos sincronizar el contenido de la base de datos local con un servidor. Y tenemos buenas razones para permitir esta operación, solo en el estado 1, de la actividad principal, y no en el estado 2. Sin embargo, si el usuario encuentra algún error semántico relacionado con db en el programa, en el estado 2 de la actividad principal, entonces él o ella puede quedarse allí.
Estamos preparados para la interrupción de llamadas entrantes y otros cambios de configuración, por lo tanto, si la aplicación se atasca en el estado 2, forzar el cierre de la aplicación y luego volver a abrirla, aún dejará al usuario en la etapa 2, en lugar de la etapa 1.
Así que queremos dejar un camino, para el usuario, después de que una fuerza cerrada se bloquea para volver a la etapa 1, y poder sincronizar la base de datos, por lo que la mayoría de su trabajo se puede guardar.
Lamentablemente no hay forma. Cuando un usuario o la fuerza del sistema detiene la aplicación, todo el proceso simplemente se elimina. No hay devolución de llamada para informarle que esto ha sucedido. Incluso onDestroy()
no garantiza que se onDestroy()
. Eso está documentado en la documentación: "There are situations where the system will simply kill the activity''s hosting process without calling this method (or any others) in it ..."