![](/img/trans.png)
[英]RuntimeException (@android.os.PowerManager$WakeLock:release:***)
[英]Screen automatically wakes up with PowerManager.ON_AFTER_RELEASE wakeLock
在以下示例活动中,仅在我使用PowerManager.ON_AFTER_RELEASE
标志时,用户关闭屏幕(带有电源按钮)后,屏幕会立即自动唤醒。 如果我不使用此标志,则不会发生。
public class TestActivity extends Activity {
private WakeLock wakeLock;
@Override
protected void onResume() {
super.onResume();
wakeLock = ((PowerManager) getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "test");
wakeLock.acquire();
}
@Override
protected void onPause() {
wakeLock.release();
super.onPause();
}
}
有没有办法在仍然使用PowerManager.ON_AFTER_RELEASE
标志时避免这种现象?
使用MediaPlayer的setWakeMode()
方法时,我遇到了同样的问题(我在源代码中进行了检查,它也使用了此PowerManager.ON_AFTER_RELEASE
标志)
或者,也许我只是误解了该标志的用途……它的用途是什么?
WindowManager.LayoutParams类具有标志FLAG_TURN_SCREEN_ON
。 记录如下:
窗口标志:添加或设置为可见窗口后,一旦显示了该窗口,系统便会拨开电源管理器的用户活动(就像用户已经唤醒设备一样)以打开屏幕。
尝试在onResume
清除此标志:
getWindow().clearFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );
并查看是否在按下电源按钮后使屏幕保持黑屏。 您也可以在onPause
尝试使用该标志。 只是一个猜测。
好的,经过多次实验,使用PowerManager.ON_AFTER_RELEASE
似乎无法避免这种自动屏幕唤醒。
因此,如果没有这个问题,就无法使用MediaPlayer.setWakeMode()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.