4

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

这是实际行为还是我遗漏了什么?

4

2 回答 2

0

我也遇到了这个问题,但是当我return true为这两种方法设置时,onStopJob被调用了。我希望它会帮助你。

于 2018-03-27T10:58:42.617 回答
0

我相信 onStopJob() 仅在您的工作在完成 onStartJob() 尝试执行的任何操作之前停止时才被调用。

于 2017-06-08T18:27:43.363 回答