我正在创建一个需要向 API 发送请求的应用程序。该请求必须每 2 分钟发送一次。为此,我使用 Firebase Job Dispatcher
问题是第一个请求是按时发送的,但下一个请求的发送延迟更大:例如。
- 第一个请求: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 6.0.1 的 Android 机器(但我的应用程序也必须在 4.3 设备上运行,这就是我使用 firebase 而不是 JobScheduler 的原因)和 Google Play 服务 11.5.09 (434)。
你有什么想法为什么要这样做?如果有办法解决这个问题?如果没有,还有其他方法可以每 2 分钟完成一次工作吗?