Actualizar widget a la medianoche (12 AM) falla

Tengo una aplicación de calendario Hijri con un widget. La fecha del calendario de Hijri debe cambiar a la medianoche usando el AlarmManager. El problema es que, a pesar de utilizar el Administrador de alarmas para programar la actualización de medianoche, el widget no se actualiza exactamente a las 12 de la medianoche. Se actualizará en algún lugar entre las 12 y 1 AM.

¿A dónde me equivoco?

Java:

private static PendingIntent service = null; private static long UPDATES_CHECK_INTERVAL = 24 * 60 * 60 * 1000; @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { schedule(context); super.onUpdate(context, appWidgetManager, appWidgetIds); } protected void schedule(Context context) { final AlarmManager m = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); final Calendar TIME = Calendar.getInstance(); Date now = new Date(); TIME.add(Calendar.DAY_OF_MONTH, 1); TIME.set(Calendar.HOUR_OF_DAY, 0); TIME.set(Calendar.MINUTE, 0); TIME.set(Calendar.SECOND, 0); TIME.set(Calendar.MILLISECOND, 0); long firstTime = (TIME.getTimeInMillis()-now.getTime()); final Intent i = new Intent(context, UpdateService.class); if (service == null) { service = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT); } m.setRepeating(AlarmManager.RTC, firstTime, UPDATES_CHECK_INTERVAL, service); } 

Manifiesto:

 <receiver android:name="com.example.app.Widget" android:label="Calendar" android:exported="false"> <intent-filter > <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> <action android:name="android.appwidget.action.APPWIDGET_ENABLED" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> <action android:name="android.intent.action.TIME_SET" /> <action android:name="android.intent.action.DATE_CHANGED" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_info" /> </receiver> 

One Solution collect form web for “Actualizar widget a la medianoche (12 AM) falla”

Creo que necesitas cambiar el código relacionado con Calender y AlarmManager.

Este calendario representa la hora exacta de la medianoche del día siguiente . Y el AlarmManager disparará la intención en ese momento cada día .

 Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.AM_PM, Calendar.AM); calendar.add(Calendar.DAY_OF_MONTH, 1); AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, service); 

Nota: Creo que debería agregar el código anterior en el método onEnabled() . Este es un punto destacado de los métodos relacionados con AppWidgetProvider .

  • Recibir mensaje de difusión en Android
  • ¿Cómo puedo añadir "Android Project" al menú Archivo> Nuevo> _____ en Eclipse?
  • Vídeo de HTML5 de Youtube detenido trabajando en Android
  • GC optimization: declarando el objeto como campo opuesto a declararlo localmente
  • Fuga de memoria de Android: InputMethodManager, mapa de bits
  • Hilo saliendo con excepción no captada
  • Cómo superponer una imagen o una vista encima de una cámara capturada imagen
  • Cómo limpiar caché de proyecto en Intellij idea como Eclipse limpio?
  • Android Parcelable - Escriba y lea ArrayList <IA> cuando IA es una interfaz
  • Error al invalidar el método toString
  • Android - dibujar mapa de bits dentro de la lona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.