我用过:
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
如何恢复到默认状态(不保持开启)?
我认为这应该可以做到:
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
详情请参阅API。
如果您仅在需要保持屏幕打开的视图上设置标志 android:keepScreenOn="true" (文档),则无需手动重置该标志。
另一种方法
getWindow().setFlags(this.getWindow().getFlags() & ~WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
也可以在xml中的根View中设置
android:keepScreenOn="true"
。
直接来自文档:
注意:您不需要清除 FLAG_KEEP_SCREEN_ON 标志,除非您不再希望屏幕在正在运行的应用程序中保持打开状态(例如,如果您希望屏幕在一段时间不活动后超时)。窗口管理器负责确保当应用程序进入后台或返回前台时发生正确的事情。但是,如果您想显式清除该标志,从而允许屏幕再次关闭,请使用clearFlags():getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)。
我创建了这些 kotlin 扩展:
fun Activity.keepScreenOn(rootView: View? = null) {
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
rootView?.keepScreenOn = true
}
fun Activity.clearScreenOn() {
window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
然后
onCreate
您可以致电keepScreenOn()
和onDestroy
clearScreenOn()