JobService只运行一次后能立即运行吗?

问题描述 投票:1回答:1

JobService只运行一次可以立即运行吗?

我目前正在测试JobService,我使用以下代码

            JobScheduler jobScheduler = getSystemService(JobScheduler.class);
            jobScheduler.schedule(new JobInfo.Builder(1,
                    new ComponentName(getApplicationContext(), SyncJobLollipop.class))
                    .setMinimumLatency(1)
                    .setOverrideDeadline(1)
                    .build());

但它立即运行,这是因为我不使用定期?或者它可以直接运行?我想用这个而不是Thread。

我可以在它完成后再次运行吗?

android android-jobscheduler
1个回答
3
投票

JobService只运行一次可以立即运行吗?

当您使用JobScheduler API时,它承诺在标准完成时它将运行您的JobService,但不一定立即运行。虽然如果您的应用程序位于前台(用户正在使用它),它将更快地运行您的JobService。我看到用户从未使用的应用程序运行作业有很大延迟的情况(此作业只执行一次)。

但它立即运行,这是因为我不定期使用?或者它可以直接运行?

当作业按周期安排时,其默认最小运行时间为15分钟(它不会将作业安排为定期小于15分钟),并且常见作业没有此限制。但这并不意味着在满足条件后立即执行工作,正如我之前解释的那样。

它可以在完成后再次运行吗?

完成后,您可以再次重新安排JobService。我已经实现了它并且运行良好。但是如果你经常安排这个JobService,系统会延迟你的工作执行。

定期作业不需要重新安排,因为在预定的时间量之后,作业将再次执行。

按照我的草案解决方案

class MyJobService extends JobService {
    public boolean onStartJob(JobParameters params)
        /* Here is run my task */
        scheduleJob(); // 
        return false;
    }

    public static void scheduleJob() {
        /* code to schedule this job service. */
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.