2017-09-20 1 views
0

J'ai un gestionnaire d'alarme et je travaille avec quelques tâches en arrière-plan avec les gestionnaires d'alarme. J'utilise wakelock pour réveiller le CPU afin de terminer mon travail de fond qui provoque l'erreur ci-dessous. J'ai cherché et trouvé qu'un type de wakelock doit être spécifié et je ne devrais pas utiliser ACQUIRE_CAUSES_WAKEUP. Que devrais-je utiliser à la place?Type de wakelock pour réveiller cpu

Mon code:

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; 
} 

Mon erreur:

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

Répondre

0

PowerManager.ACQUIRE_CAUSES_WAKEUP est pas un niveau de verrouillage de réveil valide. paramètres valides selon validateWakeLockParameters() méthode sont les suivants:

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 

Ainsi, au lieu de ACQUIRE_CAUSES_WAKEUP exactement un verrou de sillage est destiné à être utilisé, par exemple:

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

Voir aussi:

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

How to get an Android WakeLock to work?