Я создаю приложение, которому необходимо отправить запрос в API. Этот запрос необходимо отправлять каждые 2 минуты. Для этого я использую диспетчер заданий Firebase.
Проблема в том, что первый запрос отправляется вовремя, а следующие отправляются с большей задержкой: например.
- первый запрос: отправлено через 2 минуты
- второй запрос: отправлено через 2,3 минуты (вместо двух)
- третий запрос: отправлено через 3,5 минуты (вместо двух)
- четвертый запрос: отправлено через 5 минут (вместо двух)
Как вы понимаете, через сутки задержка составит 30 минут и даже больше ...
вот код, который я использовал для создания вакансии (в основном действии - onCreate)
Job pingJob = mDispatcher.newJobBuilder()
.setService(PingJob.class) // the job class to execute
.setTag(PingJob.TAG) //tag - name of the job
.setRecurring(true) // repeat
.setTrigger(Trigger.executionWindow(60, 60*2))
.setReplaceCurrent(false)
.build();
mDispatcher.mustSchedule(pingJob);
Вот класс PingJob (чтобы убедиться, что проблема не в том, что я делал в onStartJob, я только поместил журнал):
public class PingJob extends Job {
public static final String TAG = "ping_job";
@Override
public boolean onStartJob(final JobParameters params) {
Log.d("ping job", "just put a log to see when is executed");
jobFinished(params, true);
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
Я использую Android-бокс с Android 6.0.1 (но мое приложение должно работать и на устройстве 4.3, поэтому я использую firebase вместо JobScheduler) и сервисы Google Play 11.5.09 (434).
У вас есть идеи, почему он это делает? а есть ли способ обойти эту проблему? Если нет, есть ли другой способ выполнять задание каждые 2 минуты?