代码之家  ›  专栏  ›  技术社区  ›  Thomas

如何在多个活动中安全地实现wakelock

  •  0
  • Thomas  · 技术社区  · 14 年前

    我希望为我的应用程序的用户提供使用 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;
       }
    }
    

    我现在从我的 onPause onResume 覆盖,因为我希望确保在用户不积极使用我的应用程序时不会锁定用户的电话。我的应用程序还有3个全屏视图。什么是确保他们 唤醒锁定 将我的应用程序的所有部分转移到他们手机的其余部分。

    我的第一个想法是在我的每一个活动中复制相同的代码片段,尽管这看起来像是一堆废话。我不能用 onStart onStop 或者是因为当我切换到另一个全屏活动时,可见性会丢失。不过,最好是

    根据这里的图表和信息( http://developer.android.com/guide/topics/fundamentals.html )我看不出一个更好的方法来锁。

    1 回复  |  直到 14 年前
        1
  •  5
  •   CommonsWare    14 年前

    不要使用 WakeLock --这更多是为了服务,需要您持有额外的权限。

    相反,使用 setKeepScreenOn() 在一些 View 在你的活动中。把那个叫进来 onCreate() 基于 SharedPreference Intent 额外的,取决于您收集偏好的方式。