我有应用程序正在播放电视流,需要一直打开。 我确实在OnCreate()
中获得了唤醒锁定pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG);
wl.acquire();
然后在onDestroy()
中发布if (wl != null) {
wl.release();
wl = null;
}
用户通常可以通过按后退,回家或电源按钮来最小化应用程序 然后从主屏幕恢复点击应用程序图标。 我确实在onPause()中释放唤醒锁并在onResume()中获取。
我看到应用程序崩溃或完全从屏幕上消失,我看到了 与唤醒锁相关的日志。
这是控制Android电源管理器唤醒锁定的最佳做法吗?
欢迎任何意见。
答案 0 :(得分:3)
正如您所说,您确实在onPause()
中释放唤醒锁并在onResume()
中获取。这是一个很好的做法,但是我建议你同时在onUserLeaveHint()
发布唤醒锁。
@Override
protected void onUserLeaveHint() {
try {
// your code.
// release the wake lock
wl.release();
}catch(Exception ex){
Log.e("Exception in onUserLeaveHint", ex.getMessage);
}
super.onUserLeaveHint();
}
答案 1 :(得分:2)
然后在setContentView:
之后在你的oncreate中使用它getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
应该有所帮助。
答案 2 :(得分:1)
除了silvia_aut的答案,请尝试
if (wakelock.isHeld())
wakelock.release();
答案 3 :(得分:0)
试试这个:
wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
并且不要忘记权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />