2012-10-02 12 views
6

Normalmente, Android llama a en su Activity cuando comienza a ocultarse u ocultarse, seguido de onStop cuando ya no se muestra. En mi juego, detengo el juego en , por lo que el usuario no pierde el juego mientras mira a otro lado.¿Cómo saber si la actividad ha sido cubierta por el área de notificación?

Sin embargo, cuando el usuario arrastra la barra de notificaciones, cubre mi Activity, pero no se llama ni onStop. Esto no parece ser mencionado en la documentación. El juego se aleja en el fondo sin que nadie lo mire. ¿Hay alguna otra manera de decir que mi Activity se ha oscurecido cuando esto sucede, por lo que puedo detener el juego antes de que el usuario pierda? No puedo encontrar nada sobre esto en el sitio de Desarrolladores de Android.

Respuesta

3

Dado que el StatusBarManager no es parte de la API oficial, me parece poco probable que haya una forma de detectarlo. Incluso utilizando la reflexión, ninguna de las clases de barra de estado parece tener un gancho para los oyentes.

Si es posible, puede deactivate the statusbar. De lo contrario, creo que usted está fuera de suerte :(

+0

No importa. 'onWindowFocusChanged' se activa en la actividad cuando se baja la notificación. –

8

El onWindowFocusChanged(boolean hasFocus) de Activity debe servir al propósito requerido. Se le llama con false cuando el área de notificación es arrastrado hacia abajo, y con true vez que el área es arrastrado hacia arriba. La correspondiente Android documentation afirma que este método "es el mejor indicador de si esta actividad es visible para el usuario". también afirma explícitamente que la devolución de llamada se activa cuando se muestra el "panel de notificación de la barra de estado" .

Es importante tener en cuenta que este método también se llama en otras situaciones. Un buen ejemplo es la pantalla de un AlertDialog. onWindowFocusChanged incluso se llama cuando la actividad en sí muestra un AlertDialog. Esto podría requerir consideración, dependiendo de si su juego usa AlertDialogs o alguna otra cosa que cause un cambio de enfoque.

En un escenario similar al descrito en esta pregunta, hemos utilizado el método onWindowFocesChanged con éxito, p. Ej. en un Nexus 5 con Android 4.4, o una Sony Xperia Tablet con Android 4.1.

Cuestiones relacionadas