Проблема с блокировкой работы Android powermanager

#android #wakelock #powermanager

#Android #блокировка работы #powermanager

Вопрос:

Я хочу установить время блокировки на «неограниченное» время или, по крайней мере, установить время на xx минут / часов. Если я попробую этот код :

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
wl.acquire();
  

Это просто дает мне 30 секунд для блокировки. Но если я изменю свой код на wl.acquire(10*60*1000L /10 minutes/); , как предложено в Android Studio, это не приведет к каким-либо изменениям времени блокировки, есть идеи об этом?

Ответ №1:

Убедитесь, что у вас есть тег разрешений манифеста

     <uses-permission android:name="android.permission.WAKE_LOCK" />
  

обязательно вызывайте WakeLock.release() при выходе из действия

     @Override
    protected void onDestroy() {
        wakeLock.release();
        super.onDestroy();
    }
  

Блокировка работы не означает, что ваш экран будет включен.
если вы хотите, чтобы экран оставался включенным :

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
                this.setTurnScreenOn(true);
            } else {
                final Window window = getWindow();
                window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
            }
  

затем, когда вы захотите отключить его :

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
                this.setTurnScreenOn(false);
            } else {
                final Window window = getWindow();
                window.clearFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
            }
  

Комментарии:

1. Я пробовал это @Override protected void onDestroy() { wakeLock.release(); super.onDestroy(); } , но ничего не произошло

2. затем попробуйте это setTurnScreenOn(true) и window.addFlags(WindowManager. Параметры компоновки. FLAG_TURN_SCREEN_ON)