2011-01-26 4 views
57

に画面を保つ私が使用:無効に

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

私は(無キープ・オン)状態をデフォルトに再開するにはどうすればよいですか?

+0

私は答えが受け入れられることを知っていますが、これはあなたのユースケースになるのでしょうか?あなたは、それが何かの後に、画面上に活動がある間、画面を維持したいですか?いつあなたは「デフォルト(ノー・キープ・オン)状態」に戻したいのですか? – Ewoks

+3

@Ewoks - 1つのユースケースは、特定のアクティビティ(たとえば、テキストの読み取り)中に画面をオンにし、アクティビティがアクティブな間にオフになるようにユーザーの設定を提供する場合です(またはバックスタック)。その後、アクティビティ自体を再起動せずにフラグをオフにしたいことがあります。 (代替方法は、アクティビティが終了して再起動されるまで、優先順位の変更が有効にならないようにすることです) –

答えて

116

私は、これはそれを行うべきだと思う:

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

は詳細についてはAPIを参照してください。

+4

気づいていない人のためのメモ。これらのフラグの追加とクリアは、UIスレッドで行う必要があります。これは私を奇妙な方法で捕まえました。ちょうどうまく動作するのではなく、KEEP_SCREEN_ONフラグの間欠的かつ逆の動作を見た。 –

+0

私はなぜそのような高いレートを受け取ったのだろうと思っていましたが、私にとってはうまくいきませんでした。数時間後、私は本当に私のアプリの別のアクティビティが画面を維持していることを知っています。上記のコードがうまく動作しない場合は、他のアクティビティをダブルチェックしてください。 :D – thanhbinh84

17

代わりに、フラグをandroid:keepScreenOn = "true"(documentation)に設定すると、画面を維持する必要があるビューでのみフラグを手動でリセットする必要はありません。

4

別のアプローチ

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

Also read this

は、あなたは、XMLのルートビューにandroid:keepScreenOn="true"を設定することができます。