Android powermanager / wakelock проблема - PullRequest
2 голосов
/ 08 января 2011

Я сделал класс:

package com.test;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;

public class DoNotDimScreen extends Activity {

private PowerManager.WakeLock wl;

@Override
protected void onCreate(Bundle savedInstanceState) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "DoNotDimScreen");
}

@Override
protected void onPause() {
super.onPause();
wl.release();
}

@Override
protected void onResume() {
super.onResume();
wl.acquire();
}
}

Что я хочу использовать в своем основном классе, чтобы включать и выключать экран в определенные часы дня, поэтому мы попробовали следующее (в моем основном классе):

DoNotDimScreen dm = new DoNotDimScreen();

 if (hourOfDay == 5) 
  dm.onResume();
    else
     dm.onPause();

Но я получаю нулевое исключение. Что я делаю неправильно? Спасибо

Ответы [ 3 ]

3 голосов
/ 08 января 2011

Я думаю, вам нужно прочитать о жизненном цикле Activity. Никогда не следует использовать ключевое слово new для непосредственного создания экземпляра Activity, а также не вызывать onResume или onPause. Вот несколько ссылок для чтения:

0 голосов
/ 01 июня 2012

Хорошо, Йохан, позволь мне помочь тебе,

Передай контекст приложения своей основной деятельности.Там вы можете создать экземпляр wakelock.Получите необходимый вам wakelock, и наоборот.

      if (hourOfDay == 5)    
        Wl.acquire();     
     else      
        wl.release(); 

Убедитесь, что вы не передали контекст null.

Cheers ... !!

0 голосов
/ 27 сентября 2011

Вы должны понимать жизненный цикл активности андроида. Вы не можете так называть метод жизненного цикла.Но если вы хотите приобрести () / release () в течение определенного периода времени, это можно сделать с помощью следующего кода.

...