and*_*per 70 android android-jobscheduler firebase-job-dispatcher gcmtaskservice
Google有多种工作/任务调度解决方案,例如JobScheduler和GcmTaskService.每个都有自己的优点和缺点.
最近,Google推出了一个名为"Firebase JobDispatcher"的新库.
遗憾的是,关于这个新API的知识很少.事实上,很难找到任何关于它的东西.
我发现的只有他们的公告视频和样本.但即使是他们,也没有太多关于这个API的知识.
看看之前的问题,调查和我与其他API(例如,这里)的比较,我想问一下新的API是如何工作的,并且知道在使用它时应该考虑什么:
作业是否可以使用与之相关的参数,甚至可以在需要时进行修改?他们在示例中说" 一个可选的用户提供的附加软件包.默认是一个空的Bundle. "这是吗?它可以在执行时被作业修改吗?
工作可以轻松重新安排吗?它被称为" 一个布尔值,表明作业是否应该重复 ".怎样才能选择何时重新安排?我已经尝试了样本,并选择了"Recurring",但它似乎没有再次运行,只有一次.
它可以保护与图书馆的工作(因为独特的ID)吗?
更新应用程序时是否需要格外小心(如先前的API所做的那样)?更新应用后,仍可安排作业吗?对样本进行测试,似乎在更新应用程序后作业已完全消失.可以避免吗?
RECEIVE_BOOT_COMPLETED如果我希望即使重启设备仍然可以安排作业,是否需要?样本似乎有它.
是否可以获取所有预定作业及其信息(包括参数)的列表,并能够取消特定/所有作业甚至修改它们?
在清除数据操作应用程序时,是否会删除作业?
是否有可能告诉工作它最好在一段时间内运行(例如:早上7点到8点之间)?它被提到" ExecutionWindowTrigger - 它指定了一个应该执行Job的时间窗口 ".是吗?当它错过这个窗口会发生什么?
该方法onStartJob的JobService类返回一个布尔和它的说明" 是否有剩余的更多的工作. "这是什么意思?方法的needsReschedule参数是什么jobFinished意思?它们是否相互关联?
我应该知道有什么限制吗?例如,每个函数的最小值和最大值?
Fla*_*vio 100
实际上,Firebase Android JobDispatcher是Android上作业调度引擎的抽象层.目前,他们只有一个GCM网络管理器的驱动程序实现.这意味着它目前的行为与GCM网络管理器的行为相同.希望将来能够实施更多的驱动程序.
1.作业是否具有与之相关的参数,甚至可以在需要时进行修改?他们在示例"一个可选的用户提供的附加软件包中说.默认是一个空的Bundle." .是这个吗?它可以在执行时被作业修改吗?
Job.Builder有setExtras任意捆绑的方法,以后可以通过访问jobParameters.getExtras().您无法修改捆绑包(jobParameters仅包含getter).您可以使用flag重新安排作业setReplaceCurrent(true)并指定新的包.2.工作可以轻松重新安排吗?它被称为"一个布尔值,表明作业是否应该重复".怎样才能选择何时重新安排?我已经尝试了样本,并选择了"Recurring",但它似乎没有再次运行,只有一次.
setRecurring(true),setTrigger(Trigger.executionWindow(10, 20))一旦达到窗口开始截止时间,就会触发此操作,并且鼓励驱动程序在窗口结束之前运行作业(如果可能).
3.它可以保护与图书馆的工作(因为独特的ID)吗?
作业标签在您的应用中必须是唯一的.手机上的其他应用程序都有自己的"端点"(包名称/服务名称).要查看所有预定/已完成的作业,GooglePlayDriver请使用
adb shell dumpsys activity service GcmService
4.更新应用程序时是否需要格外小心(如先前的API所做的那样)?更新应用后,仍可安排作业吗?对样本进行测试,似乎在更新应用程序后作业已完全消失.可以避免吗?
GooglePlayDriver在Google Play服务或应用更新后不会重新安排作业.这是一个未解决的问题.所以现在这是你的责任.5.是否需要RECEIVE_BOOT_COMPLETED以防我希望即使重启设备也能安排作业?样本似乎有它.
setLifetime(Lifetime.FOREVER | UNTIL_NEXT_BOOT)
当然,如果你要创建自己的驱动程序,你将不得不自己照顾生命.6.是否可以获取所有预定作业及其信息(包括参数)的列表,并且能够取消特定/全部作业甚至修改它们?
7.在清除数据操作应用程序后,是否会删除作业?
8.是否有可能告诉工作它最好在一段时间内运行(例如:早上7点到8点之间)?它被提到"ExecutionWindowTrigger - 它指定了一个应该执行Job的时间窗口".是吗?当它错过这个窗口会发生什么?
executionWindow(0, 60*60).这项工作将在7:00至8:00之间运行.windowStart - 作业应被视为有资格运行的最早时间(以秒为单位).从作业计划(对于新作业)或上次运行(对于重复作业)计算.
此外,ExecutionWindowTrigger指定大致时间.它不能保证它会在给定的窗口运行.如果它错过了窗口,则作业将在以后的任何时间运行.
9."JobService"类中的方法"onStartJob"返回一个布尔值,其描述是"是否还有剩余工作量"..这是什么意思?"jobFinished"方法的"needsReschedule"参数是什么意思?它们是否相互关联?
onStartJob返回false表示您已完成工作.无需调用jobFinished.将RESULT_SUCCESS被自动发送.if onStartJob返回true表示您启动了一个线程并等待结果.作为你做的soos,你必须调用jobFinished通知谷歌播放服务是否应该重新安排工作.如果是的话,工作将根据具体情况重新安排RetryStrategy.
10.我应该知道哪些限制?例如,每个函数的最小值和最大值?
onStartJob应该尽快将工作卸载到另一个执行线程.它们提供了SimpleJobService一个例子,说明了您的期望.JobScheduler.当谷歌播放服务不可用时还需要处理这种情况,我们应该Driver在此基础上实现AlarmManager.| 归档时间: |
|
| 查看次数: |
12659 次 |
| 最近记录: |