2011-01-26 7 views
57

ho usato:Disabilita tenere schermo sul

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

Come posso riprendere a stato predefinito (no-tenere-on)?

+0

So che la risposta è accettata ma mi chiedo quale sarebbe il tuo caso d'uso per questo? vuoi tenere lo schermo attivo mentre l'attività è sullo schermo, dopo o dopo? Quando vorresti riportarlo allo "stato predefinito (non-keep-on)"? Grazie per i chiarimenti – Ewoks

+3

@Ewoks - Un caso d'uso è quando fornisci all'utente la preferenza di mantenere lo schermo attivo durante una particolare attività (ad esempio, leggendo il testo) e l'utente lo spegne mentre l'attività è attiva (o sullo stack posteriore). Dovresti quindi disattivare la bandiera senza riavviare l'attività stessa. (L'alternativa sarebbe che la modifica delle preferenze non ha effetto fino a quando l'attività è finita e riavviata.) –

risposta

116

penso che questo dovrebbe farlo:

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

Vedi API per i dettagli.

+4

Solo una nota per chiunque non sia a conoscenza. L'aggiunta e la cancellazione di questi flag devono essere eseguiti sul thread dell'interfaccia utente. Questo mi ha sorpreso in un modo strano. Invece di non lavorare, ho visto operazioni intermittenti e persino invertite dei flag KEEP_SCREEN_ON. –

+0

Mi chiedevo perché la risposta abbia ricevuto un tasso così alto, ma non ha funzionato per me. Dopo diverse ore, ho davvero notato che c'è un'altra attività nella mia app che mantiene lo schermo acceso. Quindi ricontrolla altre attività se il codice sopra riportato non funziona per te. : D – thanhbinh84

17

Se si imposta una bandiera Android: keepScreenOn = "true" (documentation) solo sulle viste che devono mantenere lo schermo acceso, non è necessario reimpostare manualmente il flag.

4

Un altro approccio

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

Also read this

e si può anche impostare android:keepScreenOn="true" nella radice View in xml.