2011-01-26 40 views
57

tôi đã sử dụng:Disable giữ màn hình trên

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

Làm thế nào để khôi phục lại để mặc định nhà nước (không giữ-on)?

+0

Tôi biết câu trả lời được chấp nhận nhưng tôi tự hỏi trường hợp sử dụng của bạn là gì? bạn có muốn giữ màn hình trong khi hoạt động trên màn hình, sau khi hoạt động hay không? Khi nào bạn muốn đặt lại trạng thái "mặc định (không giữ liên tục)"? Cảm ơn bạn đã giải thích – Ewoks

+3

@Ewoks - Một trường hợp sử dụng là khi bạn cung cấp tùy chọn người dùng để giữ màn hình trong một hoạt động cụ thể (ví dụ: đọc văn bản) và người dùng tắt nó trong khi hoạt động đang hoạt động (hoặc trên ngăn xếp). Sau đó, bạn muốn tắt cờ mà không phải tự khởi động lại hoạt động. (Thay thế sẽ là thay đổi ưu tiên không có hiệu lực cho đến khi hoạt động kết thúc và khởi động lại.) –

Trả lời

116

Tôi nghĩ rằng điều này sẽ làm điều đó:

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

Xem API để biết chi tiết.

+4

Chỉ cần lưu ý cho bất kỳ ai có thể không biết. Thêm và xóa các cờ này cần phải được thực hiện trên chuỗi giao diện người dùng. Điều này khiến tôi hiểu một cách kỳ quặc. Thay vì chỉ không làm việc tôi thấy hoạt động liên tục và thậm chí đảo ngược của các cờ KEEP_SCREEN_ON. –

+0

Tôi đã tự hỏi tại sao câu trả lời nhận được một tỷ lệ cao như vậy nhưng không làm việc cho tôi. Sau vài giờ, tôi thực sự có một hoạt động khác trong ứng dụng của tôi vẫn giữ màn hình bật. Vì vậy, hãy kiểm tra kỹ các hoạt động khác nếu mã trên không hoạt động cho bạn. : D – thanhbinh84

17

Nếu thay vào đó bạn đặt cờ android: keepScreenOn = "true" (documentation) chỉ trên các chế độ xem cần giữ màn hình, bạn sẽ không cần phải đặt lại cờ theo cách thủ công.

4

cách tiếp cận khác

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

Also read this

và bạn cũng có thể thiết lập android:keepScreenOn="true" trong Xem gốc trong xml.

Các vấn đề liên quan