我有一个主活动,里面有一些片段。在特定事件上我替换片段,在此期间我需要强制屏幕通知用户。我已经使用了唤醒锁
PowerManager.WakeLock screenOn = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
screenOn.acquire();
但我知道它不推荐,并且在某些设备上导致屏幕在锁定屏幕上闪烁。另一种方法可能是在我启动主活动时在窗口管理器上添加标志:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
但这只适用于在服务和活动上提出的事件刚刚创建的那一刻并且当活动已经存在时没有打开屏幕并且用户只需按下电源按钮并转到锁定屏幕的情况。我想更换那个片段与活动,但在当前的应用程序逻辑,它是不可取的。任何人都可以向我推荐更好的方法吗?