Исходный код Trigger
содержит:
/**
* Creates a new ExecutionWindow based on the provided time interval.
*
* @param windowStart The earliest time (in seconds) the job should be considered eligible to run.
* Calculated from when the job was scheduled (for new jobs) or last run (for recurring jobs).
* @param windowEnd The latest time (in seconds) the job should be run in an ideal world.
* Calculated in the same way as {@code windowStart}.
* @throws IllegalArgumentException if the provided parameters are too restrictive.
*/
Поскольку вы планируете повторяющееся задание (.setRecurring(true)
), время начала окна будет с момента последнего запуска задания, что может вызвать проблемы, если вы перенастроили задание минуту назад без изменений, хотя setReplaceCurrent(true)
следует избегать проблемы.
Наиболее вероятная причина (как сказал @CommonsWare) заключается в том, что эти триггеры не не совсем точны, они - когда вы хотите, чтобы ОС планировала вашу работу, а не когда она действительно запустится , Фраза in an ideal world
в комментарии выше является ключевой!
Способ повысить вероятность выполнения в нужное время - увеличить окно возможностей, которое есть у ОС, например, 50 и 100 секунд вместо 60 и 65. В качестве альтернативы, если вам нужно что-то в точное время, возможно, Тревога - лучший подход.