2011-01-08 3 views
2

/가동 잠금 : 내가 하루 중 특정 시간에 켜거나 화면을 설정하는 내 메인 클래스에서 사용하고자하는, 그래서안드로이드 powermanager I 클래스 만든 문제

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(); 

하지만 난 NullPointerException이 얻을. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 감사합니다

답변

3

나는 Activity 라이프 사이클을 읽어야한다고 생각합니다. Activity을 직접 인스턴스화하는 데 new 키워드를 사용하지 말아야하며 onResume 또는 을 호출하면 안됩니다. 다음은 읽기에 대한 몇 가지 링크입니다 : 당신은 같은 라이프 사이클 방법이라고 할 수없는 android.You의 활동 수명주기를 이해해야

0

. 그러나 특정 기간 내에 acquire()/release()를 원하면 다음 코드를 사용하여 수행 할 수 있습니다.

0

좋아요, 요한이 도와 드리겠습니다,

주요 활동에 응용 프로그램 컨텍스트를 전달하십시오. 거기에서 wakelock의 인스턴스를 만들 수 있습니다. 당신이 필요로하는 wakelock wnerever를 획득하고 그 반대도 마찬가지입니다.

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

컨텍스트 null을 전달하지 않았는지 확인하십시오.

건배 ... !!