如何取消firebase作业调度程序中的重复作业

Joh*_*ohn 3 firebase-job-dispatcher

我创建了一个经常性的工作,我希望在满足某些条件时取消重复工作.

final Job.Builder builder = dispatcher.newJobBuilder()
                .setTag("myJob")
                .setService(myJobService.class)
                .setRecurring(true)
                .setTrigger(Trigger.executionWindow(30, 60));
Run Code Online (Sandbox Code Playgroud)

我如何取消firebase的工作?

Hen*_*ing 7

关于GitHub的自述文件说:

驱动程序是一个接口,表示可以计划,取消和执行作业的组件.唯一捆绑的驱动程序是GooglePlayDriver,它依赖于Google Play服务内置的调度程序.

所以取消是你正在使用的驱动程序的一部分.检查驱动程序接口的代码有两种取消作业的方法:

/**
 * Cancels the job with the provided tag and class.
 *
 * @return one of the CANCEL_RESULT_ constants.
 */
 @CancelResult
 int cancel(@NonNull String tag);

/**
 * Cancels all jobs registered with this Driver.
 *
 * @return one of the CANCEL_RESULT_ constants.
 */
 @CancelResult
 int cancelAll();
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下你必须打电话:

dispatcher.cancel("myJob");
Run Code Online (Sandbox Code Playgroud)

要么

dispatcher.cancelAll();
Run Code Online (Sandbox Code Playgroud)

调度员将为您调用相应的驱动程序方法.如果您愿意,也可以直接在驱动程序上调用方法,就像在GitHub项目附带的示例应用程序中myDriver.cancelAll() 一样.

所选方法将返回以下常量之一:

public static final int CANCEL_RESULT_SUCCESS = 0;
public static final int CANCEL_RESULT_UNKNOWN_ERROR = 1;
public static final int CANCEL_RESULT_NO_DRIVER_AVAILABLE = 2;
Run Code Online (Sandbox Code Playgroud)