Есть ли способ выполнить задачу один и тот же день и каждый последующий день в указанное время?

Есть ли способ выполнить задачу один и тот же день и каждый последующий день в указанное время? Я использую библиотеку под названием " android-job", так как она сохраняет запланированные задания даже после перезагрузки устройства. Я изо всех сил пытался заставить эту библиотеку работать для моего случая использования без удачи.

Примечание: конечная цель - запускать и останавливать фоновую службу в указанное время каждый день. Например, я хочу остановить свою службу в 8 вечера и начать ее снова в 8 утра).

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

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 20);
calendar.set(Calendar.MINUTE, 0);

int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

long startMs = TimeUnit.MINUTES.toMillis(60 - minute) + TimeUnit.HOURS.toMillis((24 - hour) % 24);
long endMs = startMs + TimeUnit.MINUTES.toMillis(5);


int jobId = new JobRequest.Builder(TAG)
        .setExecutionWindow(startMs, endMs)
        .setPersisted(true)
        .setUpdateCurrent(updateCurrent)
        .build()
        .schedule();`

Консольный вывод:

jobInfo success, request{id=11, tag=job_demo_tag}, start 05:00:00, end 05:05:00, reschedule count 0

1 ответ

Вы можете изучить AlarmManager для этого. Он может использоваться в тех случаях, когда вы хотите, чтобы ваш код выполнялся в указанное время, даже если ваше приложение не запущено.

https://developer.android.com/reference/android/app/AlarmManager.html

Другие вопросы по тегам