Quiero detectar cuando mi aplicación se envía al fondo. Hay muchas preguntas sobre cómo enganchar la tecla HOME: entiendo que esto solo es posible registrándome como una aplicación de inicio.Desconexión automática de Android cuando la aplicación va al fondo
... PERO ... como siempre hay un cliente que quiere un determinado comportamiento ...
Tenemos una aplicación con requerimientos de alta seguridad. El cliente quiere que la aplicación cierre la sesión del servidor siempre que la aplicación entre en segundo plano por cualquier razón (llamada telefónica, tecla HOME, volver a la última actividad) (* * para aclarar Quiero decir que cuando la actividad frontal aparece en la pantalla no es una de las actividades de mi aplicación * *).
Entonces, si no puedo enganchar la tecla HOME, ¿qué otras opciones hay? Obviamente, solo conectar onPause()
no ayudará, porque eso es Activity
-específicos.
Lo "mejor" que hemos encontrado es mantener una variedad de referencias de actividad en nuestra clase de aplicación. En cada actividad onResume()
, lo agregamos a esta matriz. En onPause()
lo eliminamos. También en onPause()
enumeramos a través de esta matriz para averiguar si alguna de las actividades registradas están en primer plano. Si no se encuentra actividad en primer plano, el usuario se desconecta.
No estoy contento con esto como una solución y espero encontrar una manera mejor.
Acabo de agregar un nuevo comentario a este hilo donde muestro un método mejor (en mi opinión) usando Application.ActivityLifecycleCallbacks así como el método @peceps. Ver mi respuesta para el hilo: http://stackoverflow.com/a/13996042/327386 – RPM
+1 una gran solución para API 14+ –