Android Firebase JobDispatcher-与以前的API(JobScheduler和GcmTaskService)相比,它是如何工作的? 背景

Android Firebase JobDispatcher-与以前的API(JobScheduler和GcmTaskService)相比,它是如何工作的? 背景,android,android-jobscheduler,firebase-job-dispatcher,gcmtaskservice,Android,Android Jobscheduler,Firebase Job Dispatcher,Gcmtaskservice,谷歌有多种作业/任务调度解决方案,如JobScheduler和gcmtasksservice。每种方法都有其优缺点 最近,谷歌推出了一个名为“Firebase JobDispatcher”的新库 问题 遗憾的是,关于这个新API的内容很少。事实上,很难找到关于它的任何东西 我只找到了他们的和。但是,即使是他们的API,也没有多少关于这个API的知识 问题 查看之前的问题、调查和与其他API的比较(例如),我想问一下新API是如何工作的,并知道在使用它时要考虑什么: 作业是否可以保留参数,甚至可以

谷歌有多种作业/任务调度解决方案,如
JobScheduler
gcmtasksservice
。每种方法都有其优缺点

最近,谷歌推出了一个名为“Firebase JobDispatcher”的新库

问题 遗憾的是,关于这个新API的内容很少。事实上,很难找到关于它的任何东西

我只找到了他们的和。但是,即使是他们的API,也没有多少关于这个API的知识

问题 查看之前的问题、调查和与其他API的比较(例如),我想问一下新API是如何工作的,并知道在使用它时要考虑什么:

  • 作业是否可以保留参数,甚至可以在需要时进行修改?他们在示例中说“一个可选的用户提供的附加包。默认为空包。”是这样吗?作业执行后是否可以对其进行修改

  • 可以轻松地重新安排作业吗?据说是“一个指示作业是否应该重复的布尔值”。如何选择何时重新安排?我尝试了这个示例,并选择了“重复”,但它似乎没有再次运行,只有一次

  • 与库的作业相比,它是否可以得到保护(因为具有唯一的ID)

  • 更新应用程序时是否需要特别小心(就像以前的API那样)?更新应用程序后,是否仍可以安排作业?对样本进行测试,在应用程序更新后,这些工作似乎完全消失了。可以避免吗

  • 它是否需要
    接收\u BOOT\u COMPLETED
    ,以防我希望即使在设备重新启动时仍计划作业?样品上似乎有

  • 是否可以获取所有计划作业及其信息(包括参数)的列表,并能够取消特定/所有作业,甚至修改它们

  • 在清除应用程序的数据操作后,是否会删除作业

  • 是否可以告诉作业最好在一定的时间范围内运行(例如:早上7:00到8:00之间)?这里提到了“ExecutionWindowTrigger,它指定了作业应在其中执行的时间窗口”。是这样吗?当它错过这个窗口时会发生什么

  • JobService
    类中的方法
    onStartJob
    返回一个布尔值,其描述为“是否还有更多的剩余工作”。这是什么意思?
    作业完成
    方法的
    需要调度
    参数是什么意思?他们之间有关系吗


  • 我应该知道有什么限制吗?例如,每个函数的最小值和最大值


  • 实际上,Firebase Android JobDispatcher是Android上作业调度引擎的抽象层。 目前,他们只有一个用于GCM Network Manager的驱动程序实现。 这意味着当前它的行为方式与。希望将来会有更多的驱动程序被实现

    1。作业是否可以保留参数,甚至可以在需要时进行修改?他们在示例中说“一个可选的用户提供的附加包,默认为空包。”。是这个吗?作业执行后是否可以对其进行修改?

  • 是的,
    Job.Builder
    具有方法
    setExtras
    和任意捆绑包,以后可以通过
    jobParameters.getExtras()
    访问该捆绑包。 无法修改捆绑包(
    jobParameters
    仅包含getter)。您可以使用标志
    setReplaceCurrent(true)
    重新安排作业,并指定新的捆绑包
  • 2。可以轻松地重新安排作业吗?据说是“一个指示作业是否应该重复的布尔值”。如何选择何时重新安排?我尝试了该示例,并选择了“重复”,但它似乎不会再次运行,只运行了一次。

  • 要重新安排作业,您需要指定
    setrecurtive(true)
    setTrigger(Trigger.executionWindow(10,20))
  • 这将在窗口开始截止日期结束后立即触发 到达,并鼓励驾驶员在窗口前运行作业 如果可能的话,结束

    3。与库的作业相比,它是否可以得到保护(因为具有唯一的ID)?

  • 作业标记在应用程序中必须是唯一的。手机上的其他应用程序都有自己的“端点”(软件包名称/服务名称)。 要查看Google PlayDriver的所有计划/完成的作业,请使用

    adb外壳转储系统活动服务GcmService

  • 4。更新应用程序时是否需要特别小心(就像以前的API那样)?更新应用程序后,是否仍可以安排作业?对样本进行测试,在应用程序更新后,这些工作似乎完全消失了。可以避免吗?

  • 至于GCM网络管理器,Google Play驱动程序在Google Play服务或应用程序更新后不会重新安排作业。 这里有一个例子。所以现在这是你的责任
  • 5。如果我希望即使在设备重新启动时仍计划作业,是否需要接收\u BOOT\u COMPLETED?样本中似乎有它。

  • 是的,你需要这样的许可。 生成器有一个参数来控制行为:
    setlifety(lifety.FOREVER |直到下一次启动)
    当然,如果你要创建自己的驱动程序,你必须自己照顾自己的一生
  • 6。是否可以获取所有计划作业及其信息(包括参数)的列表,并能够取消特定/所有作业,甚至修改它们?

  • 否,与GCM网络管理器相同。 但是,您可以自己跟踪所有作业,同时安排它们播放服务
  • 7。在清除应用程序的数据操作后,是否会删除作业