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 .

  • El mejor enfoque para cargar múltiples bibliotecas nativas en la aplicación para Android
  • AssembleDebug error en Android Studio
  • Antecedentes Proceso para escanear la ubicación del usuario a intervalos regulares y actualizar la base de datos local incluso cuando la aplicación no está abierta
  • ¿Cuándo muere la instancia de Activity?
  • Cómo configurar el color de resaltado para el elemento ListView?
  • Encontrar puntos contenidos en una ruta de acceso en Android
  • Eventos VideoView onTouch: pausar / reanudar vídeo y mostrar / ocultar MediaController y ActionBar
  • Android: ¿Cómo cargar dinámicamente las clases de un archivo JAR?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.