FirebaseJobDispatcher或AlarmManager?

时间:2017-11-07 00:04:17

标签: android alarmmanager firebase-job-dispatcher

要从一开始就明确说明,这里是app所需的流程:

选择日期/小时/分钟的精确日期    - >创建新的rol ax, 8并使用Job - >进行排程FirebaseJobDispatcher恰好在正确的日期触发,并定期运行(比如周期为1-2秒),该代码将定义job是否需要再次运行。如果它不需要再次运行,请明确结束,否则重新运行它。此外,job应该具有“持续时间”(通常为60秒),无论job中发生什么,它都会结束。

到目前为止,我对三件事感到困惑:

  • “触发器”窗口似乎完全不可靠,并且在需要时大致运行job
  • 我应该在服务中使用job还是FirebaseJobDispatcher#setRecurring
  • 有时,jobFinished(job, true);设置为setRecurring(boolean)false,作业仍会再次运行

也许我应该使用jobFinished(job, false);代替?但似乎新的方式是AlarmManager,所以我不知道。

这是一些代码

服务:

FirebaseJobDispatche

活动

@Override
public boolean onStartJob(final JobParameters job) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            simulateBackgroundTask(job);
        }
    }).start();

    return true;
}

private void simulateBackgroundTask(JobParameters job) {
    try {

        Log.d(TAG, "completeJob: " + "jobStarted --------------------");

        //request server or db
        Thread.sleep(2000);

        Log.d(TAG, "completeJob: " + "jobFinished --------------------");

        //shoudRunAgain is from the result of the request
        if(shouldRunAgain)
            jobFinished(job, true);
        else
            jobFinished(job, false);

    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}


@Override
public boolean onStopJob(JobParameters job) {
    return false;
}

欢迎任何建议或解决方案,谢谢

0 个答案:

没有答案