1

我写了一个android应用程序,现在有一个问题。

如果我的应用程序正在运行并且我关闭了我的设备,那么有时它会在大约 8 秒后唤醒,然后屏幕打开并再次显示我的应用程序。

我的问题是:哪些事件或处理约束(如处理广播意图)会唤醒设备?

编辑:带有 RCT_WAKEUP 的警报会打开设备屏幕吗?

提前致谢!

4

1 回答 1

1

AlarmManager 实际上不会为您打开屏幕。您可以改用唤醒锁。

PowerManager.WakeLock wakelock;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    .........

    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AlarmReceiver");
    wakelock.acquire();       
}

完成活动后,请务必释放唤醒锁:

@Override
protected void onStop() {
    super.onStop();
    wakelock.release();
}

您还需要在清单文件中添加唤醒锁定权限:

<uses-permission android:name="android.permission.WAKE_LOCK"/>

或者,如果您不想包含此额外权限,则可以在活动中使用以下代码而不是使用唤醒锁:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
于 2013-03-04T00:22:07.477 回答