3

我创建了一个周期性工作,我想在满足某些条件时取消周期性工作。

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

如何取消 firebase 中的工作?

4

1 回答 1

7

GitHub 上的自述文件说:

Driver 是一个接口,表示可以调度、取消和执行 Jobs 的组件。唯一捆绑的驱动程序是 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();

因此,在您的情况下,您必须致电:

dispatcher.cancel("myJob");

或者

dispatcher.cancelAll();

调度器会为你调用驱动的对应方法。如果您愿意,您也可以直接在驱动程序上调用方法,myDriver.cancelAll() 就像在 GitHub 项目附带的示例应用程序中完成的那样。

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

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;
于 2016-10-10T08:56:01.923 回答