En lugar de usar el Administrador de actividades, hay un truco simple que puede hacer a través del código. Si observa el ciclo de actividad de cerca, el flujo entre dos actividades y el primer plano al fondo es el siguiente. Supongamos que A y B son dos actividades.
Cuando transición de A a B: 1. onPause() de A se llama 2. onResume() de B se llama 3. onStop() de A se llama cuando B se reanuda totalmente
Cuando aplicación va en el fondo: 1.onPause() de A se llama 2. onStop() de A se llama:
Puede detectar su evento de fondo simplemente poniendo un indicador en actividad.
Realice una actividad abstracta y extiéndala de sus otras actividades, de modo que no tenga que copiar pegue el código para todas las demás actividades donde lo necesite.
En actividad abstracta, cree la marca isAppInBackground.
En el método onCreate(): isAppInBackground = false;
En método onPause(): isAppInBackground = false;
En el método onStop(): isAppInBackground = true;
Solo necesita comprobar su onResume() si isAppInBackground es verdadero. n después de comprobar su bandera a continuación, establezca de nuevo isAppInBackground = false
para la transición entre dos actividades desde OnStop() de la primera será siempre llamada después de la segunda actvity reanuda, bandera nunca será verdadera y cuando la aplicación está en segundo plano, onStop () de la actividad se llamará inmediatamente después de OnPause y, por lo tanto, la bandera será verdadera cuando abra la aplicación más adelante.
No es cierto en todos los casos. Por ejemplo, cuando adquiere un bloqueo por activación PROXIMITY_SCREEN_OFF_WAKE_LOCK, para imitar el comportamiento de un modo de llamada, cuando la pantalla se apaga o enciende cuando el usuario se acerca al oído, es un comportamiento deseado cuando escribe, por ejemplo, una aplicación de voip. Pero a medida que el usuario coloca el teléfono cerca de su cabeza y bloquea la pantalla, se llama a OnPause y, al contrario, en Reencender. El problema es que no sabes por qué se llama, por lo que no sabes si debes pausar tu aplicación o no. Por lo tanto, es posible que existan otros eventos que puedan causar llamadas a onPause o onResume. –