使用Firebase作业调度程序每周安排一项任务

时间:2018-06-14 07:15:04

标签: android alarmmanager android-jobscheduler firebase-job-dispatcher

尝试过按小时调度重复任务的作业调度程序。已为此问题编写了代码段,但不确定这是否是正确的实现。

Snippet用于在每周的星期一11点安排任务。

对此或其他可能解决方案的任何更正都会有很大帮助。

    Calendar c1 = Calendar.getInstance();
    c1.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    c1.set(Calendar.HOUR_OF_DAY, 11);
    c1.set(Calendar.MINUTE, 0);
    c1.set(Calendar.SECOND, 0);
    c1.set(Calendar.MILLISECOND, 0);

    FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(Splash_onboarding.this));

    Job myJob = dispatcher.newJobBuilder()
            .setService(ScheduledNotificationService.class)
            .setTag(dispatcherTag)
            .setRecurring(true)
            .setLifetime(Lifetime.FOREVER)
            .setTrigger(Trigger.executionWindow(Math.round(c1.getTime().getTime() / 1000), (Math.round(c1.getTime().getTime() / 1000)) + 60))
            .setReplaceCurrent(true)
            .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
            .build();

    dispatcher.mustSchedule(myJob);

1 个答案:

答案 0 :(得分:1)

我认为您没有正确实施Firebase JobDispatcher

Trigger.executionWindow()

在此,您可以在安排工作后自己的工作执行时间后写下来。有关更多信息,请参阅: https://stackoverflow.com/a/42111723/7384780

您可以通过使用executionWindow(获取下一个星期一的时间) - System.currentTimeMillis()安排您的第一个非定期作业,然后在JobService内启动一个定期作业,执行窗口为7 * 24 * 60 * 60来解决您的问题。