JobDispatcher.cancel() не вызывает onStopJob()

Я использовал FirebaseJobDispatcher в моем проекте. Это пример кода.

public class MyCustomDispatcher extends JobService {
    @Override
    public boolean onStartJob(JobParameters job) {
        Log.e("MyCustomDispatcher", "onStartJob() called with: " + "job = [" + job.getTag() + "]");

        return false;
    }

    @Override
    public boolean onStopJob(JobParameters job) {
        Log.e("MyCustomDispatcher", "onStopJob() called with: " + "job = [" + job + "]");
        return false;
    }
}

И чтобы начать свою работу, я сделал простую вещь в своей деятельности.

FirebaseJobDispatcher firebaseJobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(this));
Job myJob = firebaseJobDispatcher.newJobBuilder()
            .setService(MyCustomDispatcher.class)
            .setTag("service")
            .setRecurring(false)
            .setTrigger(Trigger.executionWindow(0,10))
            .setConstraints(Constraint.ON_ANY_NETWORK)
            .build();

firebaseJobDispatcher.mustSchedule(myJob);

Это начинает мой сервис и onStartJob() вызывается всякий раз, когда я планирую свою работу.

Единственная проблема, когда я использую firebaseJobDispatcher.cancel("service");не звонит onStopJob(),

Это фактическое поведение или я что-то упускаю?

2 ответа

Я также столкнулся с этой проблемой, но когда я установил return true для обоих методов, onStopJob вызывается. Я надеюсь, что это поможет вам.

Я полагаю, что onStopJob() вызывается только тогда, когда ваша работа остановлена ​​до того, как она выполнит все, что пытается сделать onStartJob().

Другие вопросы по тегам