解释一个flag:
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
类似用户点击屏幕点亮。
注意:这个flag 在屏幕锁屏熄屏状态下处理拉起页面会引起出现白屏的问题:
当屏幕已点亮,但是现在是锁屏状态下,如果添加:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
这个是屏幕锁屏,熄屏状态下调用此flags 会直接显示该页面并置于锁屏页面之上。
解决办法:
获取到当前的屏幕是否是点亮状态,然后点亮时不添加
该flag:
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
if (isScreenOn) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
} else {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
最后:
在生命周期结束的时候注意要清空flags。
本文详细解析了WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON标志的作用与问题,特别是在Android设备锁屏熄屏状态下拉起页面导致白屏的情况。通过判断屏幕状态,动态调整窗口属性,有效避免了白屏现象,并提供了生命周期结束时清除标志的建议。
2309

被折叠的 条评论
为什么被折叠?



