Problemas de configuración AlarmManager retrasaron la tarea programada

Android 6.0 introduce un nuevo mecanismo de poder --Doze modo de ahorro, la pantalla de información del sistema transmitirán parte de la red ah ah lo que se recortan o reducir la frecuencia, también todo lo que aparato de radio reloj despertador ha retrasado, después de la android6.0 si quiere seguir manteniendo la alarma todavía puede ser una respuesta inmediata cuando el teléfono está en el modo denominado Doze, es necesario utilizar dos métodos setAndAllowWhileIdle AlarmManager nueva oferta () o setExactAndAllowWhileIdle ()

Por último, escribir el código de esta manera:

AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(action);
    PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(),requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M)
    {       
        alarmMgr.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendIntent);
    }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
         alarmMgr.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendIntent);
    }else{
         alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,triggerAtTime,pendIntent);
    }

Si va a configurar la alarma repitiendo, como un niño de siete cada día para hacer las tareas, precedida por

manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender);

ahora debería

manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24 * 60 * 60 * 1000, sender;

Pero parece que todavía hay alrededor de un minuto de retraso, la frustración!

Publicado 24 artículos originales · ganado elogios 5 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_26923265/article/details/84023649
Recomendado
Clasificación