我正在运行一个接收事件的服务。收到事件后,我需要服务唤醒屏幕并运行活动。
目前,它正在使用wakeLock
参数:
PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP)
我在开始活动之前使用它来唤醒屏幕。活动还有标志:
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
但是,不推荐使用SCREEN_BRIGHT_WAKE_LOCK
和FULL_WAKE_LOCK
。我想知道使用唤醒锁的替代方法是什么?没有使用唤醒锁,我无法让它工作。
答案 0 :(得分:0)
您可以将FLAG_TURN_SCREEN_ON添加到窗口标记中。
当设置为添加或显示窗口时,一旦显示窗口,系统将激活电源管理器的用户活动(就像用户已唤醒设备一样)以打开屏幕。
这样,当您从服务中启动屏幕时,您的活动将自动唤醒屏幕,无需使用唤醒锁。