entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Detectar cuando app android vuelve a foreground

Buenas, para el proyecto en el que estoy trabajando necesito que se ejecute un código cada vez que la app vuelva a foreground,
he encontrado varias soluciones a esto pero todas parecen dar problemas en algunas circunstancias. Lo ideal sería una solución
tan limpia como la de ios (uso de una clase padre de la app que controla todos los eventos). Pero parece que en android no existe,
estas son las soluciones que he encontrado:

Utilizando el ActivityManager (no me gusta por la necesidad de pedir un permiso al usuario, además que parece que da problemas en Lollipop):
http://stackoverflow.com/questions/26879951/how-to-know-if-my-application-is-in-foreground-or-background-android

Usando ActivityLifecycleCallbacks, esta es la que tiene mejor pinta de las dos soluciones, pero también he leído que puede dar problemas:
http://alexboyd.me/2014/06/android-is-in-background/

PD: no me vale meter el código en el onResume() de las activities porque entonces se ejecutaría también en el cambio de actividades.

Un saludo =)

1 Respuesta

1voto

Jorge Morales Puntos160

Que tal kratos91, no se si aún continues con tu problema.
Se me ocurre que podrías intentar crear una clase base para todas las pantallas y agregar una bandera que me permita saber cuando la aplicación se encuentra navegando entre pantallas, eso te permitiría agregar el código que requieres dentro del método onResume() sin que se ejecute todo el tiempo.

Saludos.

0voto

kratos91 comentado

Buenas Jorge, he dado con esta solución, es una clase que implementa Application.ActivityLifecycleCallbacks para que se ejecuten callbacks de todos los métodos del ciclo de vida de todas las activities de la app:

https://gist.github.com/xadh00m/1584a58ddb3d724cdd24/
Usa banderas y un delay de 500 ms para diferenciar si se ha cambiado de una activity a otra o se ha vuelto a foreground (si han pasado menos de 500ms desde el último callback es que nos movemos dentro de la app, si han pasado más es que volvemos de background).
saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta