强制设备退出待机状态

时间:2019-01-22 02:46:46

标签: android alarmmanager

我一直在处理一种奇怪的行为,我无法解决。

目标是:我希望我的应用程序出现在前台,并在将来的某个时刻强制设备退出待机模式。我希望能够继续使用我的设备或使其处于待机状态。为此,我使用AlarmManager使用setExactAndAllowWhileIdle设置了一个警报,这将打开一个活动,该活动具有添加到FLAG_SHOW_WHEN_LOCKEDFLAG_TURN_SCREEN_ONFLAG_DISMISS_KEYGUARD标志窗口

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    setShowWhenLocked(true)
    setTurnScreenOn(true)
} else {
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED)
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON)
}

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    (getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager)
        .requestDismissKeyguard(this, null)
} else {
    window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
}

行为:有时(很公平地说),当警报响起时,Activity不会显示。我注意到它在onPause()之后立即调用onResume()-如果Activity会显示/设备“唤醒”,实际上是第二次致电onResume()

我认为可能是因为屏幕关闭了(因此Activity自动调用了onPause()),但是这些标志不应该以某种方式阻止它吗?为什么有时要再次调用onResume()?我有什么明显的遗漏吗?

谢谢大家!

0 个答案:

没有答案