Firebase Jobdispatcher — начать сейчас и повторить

В этом примере я вижу, что могу запустить задание сейчас, используя Trigger.NOW или время 0,0:

Bundle myExtrasBundle = new Bundle();
myExtrasBundle.putString("some_key", "some_value");

Job myJob = dispatcher.newJobBuilder()
    // the JobService that will be called
    .setService(MyJobService.class)
    // uniquely identifies the job
    .setTag("my-unique-tag")
    // one-off job
    .setRecurring(false)
    // don't persist past a device reboot
    .setLifetime(Lifetime.UNTIL_NEXT_BOOT)
    // start between 0 and 60 seconds from now
    .setTrigger(Trigger.executionWindow(0, 60))
    // don't overwrite an existing job with the same tag
    .setReplaceCurrent(false)
    // retry with exponential backoff
    .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
    // constraints that need to be satisfied for the job to run
    .setConstraints(
        // only run on an unmetered network
        Constraint.ON_UNMETERED_NETWORK,
        // only run when the device is charging
        Constraint.DEVICE_CHARGING
    )
    .setExtras(myExtrasBundle)
    .build();

dispatcher.mustSchedule(myJob);

Мой вопрос:

Как настроить запуск задания сейчас, а также его повтор каждые [интервал времени] (назовем это 15 минут)?


person Psest328    schedule 03.11.2017    source источник
comment
Используйте AlarmManager и запускайте эту задачу каждые 15 минут.   -  person Fakher    schedule 03.11.2017
comment
На самом деле мы отказываемся от диспетчера тревог   -  person Psest328    schedule 03.11.2017


Ответы (1)


Чтобы ваша работа периодически повторялась, вызовите эти два метода:

.setRecurring(true) //true mean repeat it
.setTrigger(Trigger.executionWindow(start, end))

start : известен как windowStart, что является самым ранним временем (в секундах), когда задание должно считаться подходящим для запуска. Рассчитано с момента, когда задание было запланировано (для новых заданий)

end : известен как windowEnd. Последнее время (в секундах), когда задание должно выполняться в идеальном мире. Вычисляется так же, как и windowStart.

person Fakher    schedule 03.11.2017
comment
Я знаю. Но если мы установили его на 15 минут, как запустить его СЕЙЧАС и повторять каждые 15 минут? Как бы то ни было, он будет ждать 15 минут, пока не запустится в первый раз. - person Psest328; 03.11.2017
comment
Создайте неповторяющееся задание, которое начинается с AlarmManager с помощью executeWindow (0, 0), а через 15 минут создайте повторяющееся задание с помощью executeWindow (0, 15). - person Fakher; 03.11.2017