我在我的项目中使用了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()
是实际行为还是我遗漏了什么?

最佳答案

我相信onstopjob()只在您的作业在完成onstartjob()尝试执行的任何操作之前停止时调用。

09-18 03:54