Deshabilitar mantener la pantalla encendida

3 minutos de lectura

avatar de usuario
okydokyman

Solía:

getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

¿Cómo vuelvo al estado predeterminado (sin mantenimiento)?

  • Sé que se acepta la respuesta, pero me pregunto cuál sería su caso de uso para esto. ¿Quieres mantener la pantalla encendida mientras la actividad está en la pantalla, después o qué? ¿Cuándo le gustaría volver a configurarlo en “estado predeterminado (sin mantenimiento)”? gracias por las aclaraciones

    – Ewoks

    19 de junio de 2013 a las 13:21

  • @Ewoks: un caso de uso es cuando proporciona una preferencia de usuario para mantener la pantalla encendida durante una actividad en particular (por ejemplo, leer texto) y el usuario la apaga mientras la actividad está activa (o en la pila trasera). Entonces querrá apagar la bandera sin reiniciar la actividad en sí. (La alternativa sería que el cambio de preferencia no surta efecto hasta que la actividad finalice y se reinicie).

    –Ted Hopp

    20/10/2014 a las 16:33


Creo que esto debería hacerlo:

getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

Ver API para detalles.

  • Solo una nota para cualquiera que no esté al tanto. Agregar y borrar estos indicadores debe realizarse en el subproceso de la interfaz de usuario. Esto me atrapó de una manera extraña. En lugar de simplemente no funcionar, vi un funcionamiento intermitente e incluso inverso de las banderas KEEP_SCREEN_ON.

    – Monje Gordo

    27/01/2016 a las 22:35


  • Me preguntaba por qué la respuesta recibió una tasa tan alta pero no funcionó para mí. Después de varias horas, realmente veo que hay otra actividad en mi aplicación que mantiene la pantalla encendida. Así que verifique otras actividades si el código anterior no funciona para usted. 😀

    – thanhbinh84

    20 de septiembre de 2017 a las 7:18

  • No tuve problemas para hacer esto en onCreate(). Probablemente no importe, pero siempre configuro mis banderas antes de setContentView(). Puede haber una razón, pero he estado usando la misma configuración durante tanto tiempo que no recuerdo por qué. Además, algunas de estas banderas pueden dejar de funcionar si su minSdkVersion se establece en un valor más alto. Si algo no funciona, puede ser por eso.

    – FoxDonut

    16 de noviembre de 2020 a las 7:43

Si, en cambio, establece una bandera android:keepScreenOn=”true” (documentación) solo en las vistas que necesitan mantener la pantalla encendida, no necesitará restablecer la bandera manualmente.

avatar de usuario
Zar E Ahmer

Otro enfoque

getWindow().setFlags(this.getWindow().getFlags() & ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

también lea esto

y también puedes establecer android:keepScreenOn="true" en la vista raíz en xml.

Directamente de la documentación:

Nota: no es necesario que borre el indicador FLAG_KEEP_SCREEN_ON a menos que ya no desee que la pantalla permanezca encendida en su aplicación en ejecución (por ejemplo, si desea que la pantalla se apague después de un cierto período de inactividad). El administrador de ventanas se encarga de garantizar que sucedan las cosas correctas cuando la aplicación pasa a un segundo plano o vuelve al primer plano. Pero si desea borrar explícitamente la bandera y, por lo tanto, permitir que la pantalla se apague nuevamente, use clearFlags(): getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

¿Ha sido útil esta solución?