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().