Android电源管理器唤醒锁

时间:2013-08-30 09:12:19

标签: java android power-management wakelock android-wake-lock

我有应用程序正在播放电视流,需要一直打开。 我确实在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电源管理器唤醒锁定的最佳做法吗?

欢迎任何意见。

4 个答案:

答案 0 :(得分:3)

正如您所说,您确实在onPause()中释放唤醒锁并在onResume()中获取。这是一个很好的做法,但是我建议你同时在onUserLeaveHint()发布唤醒锁。

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" />