gpt4 book ai didi

android - 如何解决工作管理器上的多实例问题?

转载 作者:行者123 更新时间:2023-11-29 16:34:36 26 4
gpt4 key购买 nike

我有一个 worker 来做一个周期性的任务。这个 worker 在创建 Activity 中被调用。每次 Activity 打开时,都会创建一个新实例,并在同一时间多次执行相同的任务。我这样调用任务

task = new PeriodicWorkRequest.Builder(BackgroundTask.class, 1000000, TimeUnit.MILLISECONDS).build();
WorkManager.getInstance().enqueue(task);

如何避免创建多个实例?如果没有工作人员在运行,我需要在创建 Activity 时调用实例。

最佳答案

您可以使用有趣的 WorkManager.enqueueUniquePeriodicWork

这个函数需要3个参数:

  1. tag(字符串),因此它会使用此标签查找其他先前创建的工作请求
  2. strategy 在查找其他以前创建的工作请求时使用。您可以替换以前的工作或保留它
  3. 你的新工作要求

例如,在一个 kotlin 项目中,我需要每隔一段时间运行一次位置捕获工作,我创建了一个像这样开始工作的乐趣:

fun init(force: Boolean = false) {

//START THE WORKER
WorkManager.getInstance()
.enqueueUniquePeriodicWork(
"locations",
if (force) ExistingPeriodicWorkPolicy.REPLACE else ExistingPeriodicWorkPolicy.KEEP,
PeriodicWorkRequest.Builder(
LocationsWorker::class.java,
PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS,
TimeUnit.MILLISECONDS)
.build())

}

关于android - 如何解决工作管理器上的多实例问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com