解释一个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。