studio - ¿Cómo obtener una devolución de llamada cuando la aplicación Android viene en primer plano desde el fondo?
notificaciones push android firebase (4)
¿Cómo saber el estado de la aplicación de fondo en primer plano en Android?
Amplié mis actividades de una convocatoria de actividad de base y la clase de actividad de base amplía la actividad de Android. Puse el código appcomeForeground () en la actividad base en onRestart () pero también su llamada cuando navegamos por la actividad en nuestra aplicación de primer plano.
Por favor, sugiera la forma de recuperar la llamada solo cuando la aplicación aparezca en primer plano.
Gracias por adelantado.
Mantener una variable booleana en Baseactivity,
es decir:
private boolean isForeground;
En el interior onResume()
de Baseactivity
make isForeground = true
y dentro del método onPause()
de Baseactivity
make isForeground = false
y siempre que quiera saber el estado, verifique esa variable booleana y aplique su lógica adicional en consecuencia.
No hay una forma proporcionada por el marco para hacer esto. He descrito mi propia solución aquí: https://.com/a/14734761/1207921
Otra forma de resolverlo es llamar a putExtra
en los intentos que permiten al usuario navegar entre las actividades de la aplicación. Si onRestart
/ onResume
no recibe este Extra, la aplicación acaba de entrar en primer plano.
Para verificar si su aplicación está en segundo plano, puede hacer lo siguiente.
Declare una clase que mantendrá el estado
public class ApplicationState {
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private volatile static boolean activityVisible;
}
en el método onResume
de cada actividad de su llamada a la aplicación
ApplicationState.activityResumed()
y en el método onPause
de cada actividad de su aplicación llame
ApplicationState.activityPaused()
Ahora, en cualquier momento, puede verificar el estado de fondo / fondo de su aplicación simplemente llamando
ApplicationState.isActivityVisible()