Как установить точные, повторяющиеся сигналы тревоги в Android 4.4?

В настоящий момент я устанавливаю такие сигналы следующим образом:

        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

        timedate = cal.getTime();

        //convert date to milis
        long timeInMilis = (timedate.getTime());

        //Set Alarm to Repeat
        manager.setRepeating(AlarmManager.RTC_WAKEUP, timeInMilis, interval, pendingIntent);

К сожалению, запланированные времена для повторения неточны, и я читал, что они могут быть неточными в течение полного интервала!

Итак, я хотел бы переключиться на настройку точного повторяющегося сигнала. Для моего устройства требуется минимум только последний API 19/Android 4.4, поэтому я не могу использовать setRepeating.

Что я могу сделать, чтобы установить точную повторяющуюся тревогу?

Ответы

Ответ 1

К сожалению, запланированные времена для повторения неточны, и я читал, что они могут быть неточными в течение полного интервала!

Если ваш targetSdkVersion равен 19 или выше, да.

Что я могу сделать, чтобы установить точную повторяющуюся тревогу?

Используйте setExact(), чтобы получить контроль за начальной задержкой. Затем, в рамках вашей работы для обработки этого события, используйте setExact(), чтобы получить контроль в следующее необходимое время. IOW, вы сами выполняете "повторяющуюся" часть.

Да, это раздражает.

Преднамеренно раздражает, чтобы разработчики не использовали точные повторяющиеся сигналы тревоги, поскольку они хуже для батареи, чем их неточные братья. Если пользователь будет воспринимать неточное поведение и не будет его ценить, не стесняйтесь использовать setExact(), чтобы аварийные сигналы возникали, когда пользователь хочет. Однако, если пользователь не будет воспринимать неточное поведение, используйте неточные сигналы тревоги, так как пользователь может заметить воздействие батареи на ваши точные сигналы тревоги.