0

我正在使用印象笔记的JobScheduler. 该库提供了一种设置周期性作业的方法,但是重复之间的最小间隔为 15 分钟。

我希望能够每隔几分钟(最多 3 个,最少 2 个)将用户的位置发送到服务器。在工作完成后一次又一次地安排你的旧工作在技术上是否可行?像这样的东西:

protected Result onRunJob(Params params)
{
    // my actual job runs here

    schedulePeriodicJob();
    return Result.SUCCESS;
}

private void schedulePeriodicJob()
{
    jobId = new JobRequest.Builder(ScheduleJob.TAG)
            .setExact(TimeUnit.MINUTES.toMillis(2))
            .setBackoffCriteria(TimeUnit.MINUTES.toMillis(1), JobRequest.BackoffPolicy.LINEAR)
            .build()
            .schedule();
}

或者我应该简单地使用前台服务来实现这一点?

4

1 回答 1

0

Evernote 作业调度程序基于 取决于context/device/playservices 版本。无论实现方式如何,API 都会公开以下方法:JobSchedulerGcmNetworkManagerAlarmManager

public JobRequest.Builder setPeriodic(long intervalMs, long flexMs)

我会使用这个而不是“手动”重新安排工作。我也不认为setBackoffCriteria如果不在 API 级别设置重复工作,您的电话将无法正常工作。

于 2018-04-13T09:38:00.987 回答