FirebaseJobDispatcher: когда вызывается JobService.onStopJob () - PullRequest
0 голосов
/ 23 февраля 2019

Я видел вопросы по этому вопросу.Извлек исходный код , но до сих пор не могу понять, почему JobService.onStopJob() не называется после выполнения работы.

Код, который создает Job:

private Job jobFrom(Bundle bundle, int windowStart, int windowEnd) {
   return dispatcher.newJobBuilder()
      .setService(AttackJobService.class)
      .setTag(attack.getPushId())
      .setRecurring(false)
      .setLifetime(Lifetime.UNTIL_NEXT_BOOT)
      .setTrigger(Trigger.executionWindow(windowStart, windowEnd))
      .setReplaceCurrent(false)
      .setExtras(bundle)
      .build();
}

Работа запланирована как показано ниже:

FirebaseJobDispatcher dispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
dispatcher.mustSchedule(job);

Мой JobService все еще довольно прост, потому что яя все еще пытаюсь проверить структуру:

public boolean onStartJob(@NonNull JobParameters job) {
    new Thread(() -> {
        try {
            Thread.sleep(2000);
            jobFinished(job,false); //signal that the job is done
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }).start();
    return true; // Answers to the question: "Is there still work going on?"
}

public boolean onStopJob(@NonNull JobParameters job) {
    Log.d(TAG, "onStopJob() called");
    return false; // Answers to the question: "Should this job be retried?"
}

Вызывается onStartJob(), и поток начинает выполняться.Поток спит в течение 2 секунд, а затем вызывается jobFinished().

Разве это не означает, что onStopJob() тоже нужно вызывать?

...