Xamarin android Worker



我有旧的xamarin android jobintentservice,我正在替换以支持android 12.0。

我现在继承了Worker而不是JobIntentService,并使用WorkManager来队列它的作业。

几个问题:

  1. 是否有一种方法在DoWork覆盖方法中使用await ?
  2. 是更好地继承ListenableWorker,而不是为了使用等待?我输了吗?如果我换成它会怎么样?
  3. 如果我从Worker的DoWork中执行task . factory . startnew (LongRunning),并立即返回成功结果,我的长时间运行的任务将运行到完成,还是所有相关的工作将终止?

我认为你可以先了解WorkManager

从文档Schedule tasks with WorkManager我们知道:

WorkManager是持久工作的推荐解决方案。当它通过应用程序重启和系统重启保持计划时,工作是持久的。因为大多数后台处理最好是通过持久化工作来完成的,所以WorkManager是主要推荐的后台处理API。

WorkManager处理三种类型的持久工作:

  • Immediate:必须立即开始并很快完成的任务。五月加快。

  • 长时间运行:可能运行更长时间的任务,
    可能超过10分钟。

  • 可延迟的:在较晚的时间开始并且可以定期运行的计划任务。

从Work chain of Features中,我们知道

对于复杂的相关工作,使用一个直观的界面将单个工作任务链接在一起,该界面允许您控制哪些部分按顺序运行,哪些部分并行运行。

WorkManager.getInstance(...)
.beginWith(Arrays.asList(workA, workB))
.then(workC)
.enqueue();

对于每个工作任务,您可以定义该工作的输入和输出数据。当将工作链接在一起时,WorkManager会自动将输出数据从一个工作任务传递到下一个工作任务。

注意:

如果你还有什么问题,再来找我。

最新更新