【问题标题】:Schedule a task weekly using Firebase job dispatcher使用 Firebase 作业调度程序每周安排一个任务
【发布时间】:2018-06-14 07:15:03
【问题描述】:

已尝试使用作业调度程序按小时安排重复性任务。已针对该问题编写了代码 sn-p,但不确定这是否是正确的实现。

片段用于在每周一的 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);

【问题讨论】:

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


    【解决方案1】:

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

    Trigger.executionWindow()
    

    在本文中,您会在安排作业后写下作业自行执行的时间。有关更多信息,请参见: https://stackoverflow.com/a/42111723/7384780

    您可以通过使用 executionWindow(获取下周一的时间) - System.currentTimeMillis() 安排您的第一个非重复作业来解决您的问题,然后在 JobService 中启动一个重复作业,其中 executionWindow 为 7 * 24 * 60 * 60。

    【讨论】:

    猜你喜欢
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多