![](/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.