2017-09-20 23 views
0

私はアラームマネージャーを持っています。私はアラームマネージャーと一緒にバックグラウンドでいくつかの仕事をしています。私は、以下のエラーの原因となるバックグラウンド作業を終了するためにCPUをスリープ状態にするためにwakelockを使用します。私は検索して、タイプのワockロックを指定しなければならないことを発見しました。私はACQUIRE_CAUSES_WAKEUPを使用すべきではありません。代わりに私は何を使うべきですか?覚醒するCPUのためのワockロックのタイプ

マイコード:

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?

関連する問題