我想知道是否可以使用firebase jobspatcher来安排url命中并获取响应,以便更新db。
我想每天晚上跑一次。有人知道这是否可能吗?
我找不到这样做的好例子。我已经阅读了android文档和https://github.com/firebase/firebase-jobdispatcher-android#user-content-firebase-jobdispatcher-
我需要使用firebase jobspatcher,因为我的目标是api 16。
提前谢谢。
更新
这就是我每天安排一次的时间。

final int periodicity = (int) TimeUnit.HOURS.toSeconds(24);
final int toleranceInterval = (int) TimeUnit.HOURS.toSeconds(1);

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
Job job = dispatcher.newJobBuilder()
        .setService(UpdateTVJobService.class)
        .setTag(JOB_TAG)
        .setTrigger(Trigger.executionWindow(periodicity, periodicity + toleranceInterval))
        .setLifetime(Lifetime.FOREVER)
        .setRecurring(true)
        .setReplaceCurrent(true)
        .build();

int result = dispatcher.schedule(job);

if (result != FirebaseJobDispatcher.SCHEDULE_RESULT_SUCCESS) {
    Log.d("JOB_TAG", "ERROR ON SCHEDULE");
}

最佳答案

您可以使用firebase jobspatcher计划重复作业。根据您的要求,您需要创建一个扩展jobservice的服务,该服务从url获取响应并更新数据库。然后,您可以使用firebase jobspatcher计划此服务。在executionwindow中,您必须指定作业在理想情况下应运行的最早和最晚时间。
如果您希望每24小时后安排一次作业,可以使用执行窗口(60*60*24,60*60*24+60)。如果您希望每天晚上都运行,则必须确保最初是在晚上安排的。为此,您可以在APp安装并使用job dispatcher计划周期性作业,或者根据从现在开始的不同和所需的执行时间,可以使用job dispatcher计划非递归作业,该作业将在夜间运行,并且在该作业服务中,可以使用job计划周期性作业调度员。
executionwindow指定大约的时间。不能保证它会在给定的窗口运行。如果错过窗口,作业将在理想情况下最早运行。对于重复作业,一旦作业完成,下一个作业将从作业上次运行的时间计算执行窗口时间。

Job myJob = dispatcher.newJobBuilder()
                    .setTag("my-unique-tag")
                    .setRecurring(true)
                    .setLifetime(Lifetime.FOREVER)
                    .setService(MyJobService.class)
                    .setTrigger(Trigger.executionWindow(60*60*24,60*60*24+60))
                    .setReplaceCurrent(false)
                    .setRetryStrategy(RetryStrategy.DEFAULT_EXPONENTIAL)
                    .setConstraints(Constraint.ON_ANY_NETWORK)
                    .setExtras(myExtrasBundle)
                    .build();

dispatcher.mustSchedule(myJob);

10-07 12:44
查看更多