2017-09-20 15 views
0

나는 경보 관리자를 가지고 있으며 경보 관리자와 함께 백그라운드에서 몇 가지 작업을하고있다. 나는 아래의 오류를 일으키는 나의 배경 작업을 끝내기 위해 CPU를 깨우기 위해 wakelock을 사용한다. 검색 한 결과 일종의 wakelock이 지정되어야하고 ACQUIRE_CAUSES_WAKEUP을 사용해서는 안된다는 것을 알았습니다. 대신 무엇을 사용해야합니까?waking cpu를위한 wakelock 유형

내 코드 :

private static PowerManager.WakeLock wakeLock; 
public static void acquirWakeLock(){ 
    if(wakeLock!=null){ 
     wakeLock.release(); 
    } 

    PowerManager pm=(PowerManager) KITILApplication.getappContext().getSystemService(Context.POWER_SERVICE); 
//Error is below line 
wakeLock=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.ON_AFTER_RELEASE,"aqs_wake_lock"); 
    wakeLock.acquire(); 
} 
public static void releaseWakeLock(){ 
    if(wakeLock!=null) 
     wakeLock.release(); 
    wakeLock=null; 
} 

내 오류 :

Caused by: java.lang.IllegalArgumentException at android.os.PowerManager$WakeLock.<init> 

답변

0

PowerManager.ACQUIRE_CAUSES_WAKEUP가 유효한 웨이크 잠금 수준이 아니다. validateWakeLockParameters() 방법에 따라 유효한 매개 변수는 다음과 같습니다

PARTIAL_WAKE_LOCK 
SCREEN_DIM_WAKE_LOCK 
SCREEN_BRIGHT_WAKE_LOCK 
FULL_WAKE_LOCK 
PROXIMITY_SCREEN_OFF_WAKE_LOCK 
DOZE_WAKE_LOCK 
DRAW_WAKE_LOCK 

그래서, 정확히 하나의 웨이크 잠금이 사용하기위한 것입니다 대신 ACQUIRE_CAUSES_WAKEUP, 예를 들어 : 또한

newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "aqs_wake_lock"); 

참조 :

https://developer.android.com/reference/android/os/PowerManager.html#newWakeLock

How to get an Android WakeLock to work?