По какому принципу обновляется виджет в Android(используя AlarmManager)?

В моём приложении используется виджет, и мне нужно, чтобы он обновлялся несколько раз в день в назначенное время. Код:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    if (ACTION_AUTO_UPDATE_WIDGET.equals(intent.getAction())) {
        Log.d("widget","received");
        onUpdate(context, AppWidgetManager.getInstance(context),
                AppWidgetManager.getInstance(context).getAppWidgetIds(new ComponentName(context, Widget.class)));
    }
}

@Override
public void onDisabled(Context context) {
    super.onDisabled(context);
    Intent intent = new Intent(context, Widget.class);
    intent.setAction(ACTION_AUTO_UPDATE_WIDGET);
    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmMgr.cancel(PendingIntent.getBroadcast(context, 0, intent, 0));
}

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);


    try {
        DB db = DBFactory.open(context, "notes");
        ArrayList <Note> noteArrayList = db.getObject("notes", ArrayList.class);
        for(Note note: noteArrayList) {
            setUpdateIntent(context, note.getHours(), note.getMinutes());
        }
    } catch (SnappydbException e) {
        e.printStackTrace();
    }

}

private void setUpdateIntent(Context context, int h, int m) {
    Intent intent1 = new Intent(context, Widget.class);
    intent1.setAction(ACTION_AUTO_UPDATE_WIDGET);
    PendingIntent alarmIntent = PendingIntent.getBroadcast(context, h*m, intent1, 0);

    Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, h);
    c.set(Calendar.MINUTE, m);

    AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmMgr.setRepeating(AlarmManager.RTC, c.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
}

Исходя из данных, полученных в DB, он должен обновляться в 17:37, 17:40 и 17:42. Вот логи обновления:

2021-09-07 17:38:31.518 6787-6787/com.apps.app D/widget: received
2021-09-07 17:38:31.547 6787-6787/com.apps.app D/widget: received
2021-09-07 17:42:52.078 6787-6787/com.apps.app D/widget: received
2021-09-07 17:42:52.092 6787-6787/com.apps.app D/widget: received

Не очень понимаю, каким образом он обновляется. Можете объяснить?


Ответы (0 шт):