tarea studio proyecto programada notificacion manager example codigo alarma android calendar alarmmanager android-pendingintent android-alarms

programada - proyecto de alarma en android studio



El administrador de alarmas no dispara alarmas en el momento exacto en Android (1)

Programé la alarma usando la clase Calendar como se muestra a continuación

Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY,1); cal.getTimeInMillis(); cal.set(Calendar.MINUTE,05); long TriggerMillis = cal.getTimeInMillis(); AlarmManager aManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); aManager.set(AlarmManager.RTC_WAKEUP, TriggerMillis,pIntent);

donde pIntent es un intento pendiente de continuar cuando se dispara la alarma.

El evento se desencadena con unos segundos de retraso. ¿Hay algún problema al usar la clase Calendar para esta tarea? ¿Alguna sugerencia?

TIA ...


Tienes dos problemas:

  1. No es confiable utilizar una alarma _WAKEUP con un servicio directamente. Los únicos patrones confiables incluyen WakefulBroadcastReceiver , mi WakefulIntentService , o algo PendingIntent , donde PendingIntent será para BroadcastReceiver .

  2. Si su android:targetSdkVersion tiene 19 o más y se está ejecutando en un dispositivo API Level 19+, set() es inexacto. Idealmente, permite que sea inexacto, o tal vez use setWindow() para controlar que tan apagado estará, para minimizar el golpe de poder de su evento de alarma. Si tiene que ocurrir en un momento preciso, deberá usar setExact() . Dado que setWindow() y setExact() son nuevos en el Nivel 19 de la API, deberá recurrir a set() en dispositivos más antiguos, examinando Build.VERSION.SDK_INT y bifurcando en consecuencia.