okydokyman
Solía:
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
¿Cómo vuelvo al estado predeterminado (sin mantenimiento)?
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.
Zar E Ahmer
Otro enfoque
getWindow().setFlags(this.getWindow().getFlags() & ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
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).
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