如何在多个活动中安全地实施WakeLock

时间:2010-11-21 21:46:18

标签: android android-wake-lock

我希望为我的应用程序的用户提供使用WakeLock保持屏幕的功能。在我的主要活动中,我创建了以下函数:

protected void processWakeLock(int pauseResume) {
   switch (pauseResume) {
   case STATE_RESUME:
      if (mKeepScreenOn) {
         wakeLock.acquire();
      }
      break;
   case STATE_PAUSE:
      if (wakeLock.isHeld()) {
         wakeLock.release();
      }
      break;
   }
}

我目前正在通过我的onPauseonResume覆盖来调用它,因为我希望确保在用户未主动使用我的应用程序时不会锁定用户的手机。我的应用程序有3个其他全屏视图。确保他们的WakeLock能够覆盖我的应用程序的所有部分,同时仍然对其余手机安全的最佳方法是什么。

我的第一个想法是在我的每个活动中复制相同的代码片段,虽然这似乎是很多锅炉板。我无法使用onStartonStop,因为当我切换到另一个全屏活动时,可见性会丢失。

可能会更好

根据此处的图表和信息(http://developer.android.com/guide/topics/fundamentals.html),我没有看到更好的方法来应用锁定。

1 个答案:

答案 0 :(得分:5)

请勿使用WakeLock - 这对服务更有用,并要求您持有额外的权限。

相反,请在您的活动中的某些setKeepScreenOn()上使用View。根据您收集偏好的方式,根据onCreate()SharedPreference额外内容在Intent中调用该内容。