Как безопасно внедрить WakeLock для нескольких видов деятельности? - PullRequest
0 голосов
/ 22 ноября 2010

Я хочу предоставить пользователям моего приложения возможность держать экран включенным с помощью 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 других полноэкранных режима.Как лучше всего обеспечить, чтобы их WakeLock переносился на все части моего приложения, при этом оставаясь безопасным для остальных телефонов.

Моя первая мысль - дублировать один и тот же фрагмент кода в каждом измоя деятельность, хотя это кажется большой плитой котла.Я также не могу использовать onStart и onStop, потому что видимость теряется, когда я переключаюсь на другое полноэкранное действие.Хотя, возможно, было бы лучше

Основываясь на диаграмме и информации, найденной здесь (http://developer.android.com/guide/topics/fundamentals.html), я не вижу лучшего способа применить блокировку.

1 Ответ

5 голосов
/ 22 ноября 2010

Не используйте WakeLock - это больше для услуг и требует от вас дополнительного разрешения.

Вместо этого используйте setKeepScreenOn() для некоторых View в своей деятельности. Назовите это в onCreate() на основе SharedPreference или Intent дополнительно, в зависимости от того, как вы собираете предпочтение.

...