android - Cómo detectar cuándo se abre la barra de notificación/sistema
android-notification-bar (1)
Antes de que comience la implementación, daré una breve explicación de mi lógica (muy intrépida). Cuando una actividad ya no es visible para el usuario por cualquier motivo, se invoca onWindowFocusChanged (..). Sin embargo, onStop () solo se invoca cuando la Actividad ya no es visible para el usuario al ir al fondo. Noté que al cambiar de Actividades, onStop () siempre se invoca después de onWindowFocusChanged (..), así que agregué un check en onWindowFocusChanged (..) para ver si onStop () ya había sido invocado (con un retraso de 1 segundo), y Hice esto usando el miembro estático. Ahora para el cómo ...
Necesitará una actividad para padres que extienda todas las actividades en su aplicación. En esta actividad principal, agregue este miembro estático:
private static boolean wasOnStopCalledAfterOnWindowFocusChanged;
Luego, en su método onStop (), agregue esta línea, asegúrese de invocar ANTES de super.onStop ()
@Override
protected void onStop() {
wasOnStopCalledAfterOnWindowFocusChanged = true;
super.onStop();
}
Finalmente, debe anular onWindowFocusChanged (..) en esta actividad principal y agregar la siguiente lógica.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (!hasFocus) {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
if (!wasOnStopCalledAfterOnWindowFocusChanged) {
// NOTIFICATION BAR IS DOWN...DO STUFF
}
wasOnStopCalledAfterOnWindowFocusChanged = false;
}
}, 1000);
}
}
Necesitaba saber cuándo se abre la barra del sistema / notificación en mi aplicación, y no pude encontrar ninguna solución real, por lo que hackeé algo que parece funcionar bastante bien.