如何使用WorkManager执行后台任务(下)

  • 时间:
  • 浏览:1
  • 来源:大发5分快乐8_极速5分11选5

同样地,在 Worker中可不可不能不能都可不可不能不能 使用 Worker.setOutputData()设置一一个 Data对象的返回值。要获取到你你这个 返回值就通过 LiveData<WorkStatus>

有一一个下载任务,在 Worker中获取传递过来的参数url,否则 执行下载,最后设置下载结果。

最后,通过 WorkStatus获取返回值

你你这个 链式执行顺序是:子链 A->B 与子链 C->D 并行执行的, workA执行后再执行 workB,以及 workC执行后执行 workD ;否则 在等待 workB以及 workD都执行完,最后执行 workE

https://developer.android.com/topic/libraries/architecture/workmanager/advanced

在程序运行运行运行开发中,肯能会多次把同一一个链式任务打上去到 WorkManager中,但希望可不可不能不能都可不可不能不能 一一个链式任务在执行,这前一天可不可不能不能都可不可不能不能 使用唯一任务序列对链式任务指定避免规则。假设,做一一个下载文件操作,对一一个文件下载链接,朋友可不可不能不能 可不可不能不能 重复下载,只可不可不能不能都可不可不能不能 打上去一次,上方再打上去你你这个 任务,就忽略掉,肯能朋友不希望重复多次下载同一一个文件。好多好多 当打上去一个同样名称为"download"操作任务时,对于唯一任务序列来说,可不可不能不能都可不可不能不能 通过 ExistingWorkPolicy中的 REPLACEKEEPAPPEND,来指定打上去的策略。

http://clmirror.storage.googleapis.com/codelabs/android-workmanager/index.html?index=..%2F..%2Findex#0

可不可不能不能都可不可不能不能 注意的是, WorkManager无法保证一个子链的执行顺序,有肯能 chain1chain2快,都不 肯能是 chain1chain2慢。

WorkManager会按照指定的顺序来执行 workAworkBworkC。肯能其带有一一个工作任务执行的前一天返回 Worker.Result.FAILURE,可不可不能不能都可不可不能不能 整个执行序列就会停止。

举个栗子:

https://developer.android.com/reference/androidx/work/ExistingWorkPolicy

还可不可不能不能都可不可不能不能 通过 WorkContinuation.combine()最好的依据创建更加冗杂的链接任务调用序列。它可不可不能不能都可不可不能不能 将一个 WorkContinuation对象合并,假设要调用如下的任务序列:

WorkManager.beginWith()最好的依据可不可不能不能都可不可不能不能 传递多个 Worker对象,表示可不可不能不能都可不可不能不能 并行执行的任务组,否则 再调用 then()最好的依据。当这并行任务组都执行完前一天才会执行接下来 then中的工作任务。

在上一文中肯能了解到 WorkManager的基本用法前一天,今天来看看它的许多高级用法:

任务执行可不可不能不能都可不可不能不能 传递参数以及获取到任务执行的结果。使用 WorkRequst.Builder.setInputData()最好的依据传递一一个 Data对象,它是key-value形式的对象,使用 Data.Builder来创建。在 Worker类中可不可不能不能都可不可不能不能 使用 Worker.getInputData()获取到参数。

否则 ,通过 WorkRequest传递参数

WorkManager在执行多个工作任务的前一天,可不可不能不能都可不可不能不能 指定执行顺序。假设一一个程序运行运行运行带有3个 OneTimeWorkRequest对象: workAworkBworkC。这有好多个任务可不可不能不能都可不可不能不能 按照顺序执行,可不可不能不能都可不可不能不能 可不可不能不能都可不可不能不能 使用 WorkManager.beginWith()最好的依据加入 workA,这前一天会返回一一个 WorkContinuation对象,它定义了工作任务的执行序列。否则 通过它再调用 WorkContinuation.then()workBworkC加入到执行队列中,最后执行 WorkManager.enqueue()最好的依据。

使用 beginUniqueWork()最好的依据可不可不能不能都可不可不能不能 创建任务序列,否则 可不可不能不能都可不可不能不能 指定唯一的一一个名称(name)。否则 再 ExistingWorkPolicy指定任务的替换策略