如何在WorkManager Android(kotlin)中仅运行特定的工作程序

时间:2018-07-22 00:44:01

标签: android android-studio kotlin android-workmanager

我有一些用于工作人员的脚本,每当我尝试执行一个特定的工作人员时,它都会执行我拥有的所有脚本工作人员。

这是我运行脚本工作器的方式:

val stockTakingSync = PeriodicWorkRequest.Builder(
            UploadStockTakingSyncWorker::class.java,
            interval,
            TimeUnit.MILLISECONDS)
            .setConstraints(myConstraints)

    val stockTakingSyncWork = stockTakingSync.build()
    WorkManager.getInstance()?.enqueue(stockTakingSyncWork)

但这是我得到的回报:

07-22 07:35:08.789 1327-1387/com.mockie.daikokuten D/:dump doSync: PrdPriceSyncWorker called
07-22 07:35:08.796 1327-1386/com.mockie.daikokuten D/:dump doSync: PrdSizeWorker called
07-22 07:35:08.803 1327-1388/com.mockie.daikokuten D/:dump doSync: PrdTypeSyncWorker called
07-22 07:35:10.120 1327-1404/com.mockie.daikokuten D/:dump doSync: PrdTypeSyncWorker called
07-22 07:35:10.123 1327-1386/com.mockie.daikokuten D/:dump doSync: PrdSizeWorker called

如您所见,所有工作程序也被执行。

2 个答案:

答案 0 :(得分:0)

观察了一会后,if(i>0) { if(j>0){ System.out.println("Hello World"); } else{ System.out.println("else"); } } 似乎也触发了所有  您之前已经注册的先前计划/排队任务

即使您已经删除了所有脚本来运行WorkManager,也不能仅通过按WorkManager.getInstance()?.enqueue(stockTakingSyncWork)setPeriodicSync来取消/删除任何RUN APP您必须取消安装该应用程序才能摆脱以前的任何排队任务。

答案 1 :(得分:0)

这是一个错误,我们已将其修复为alpha05的一部分。仅PeriodicWorkRequest发生这种情况。有关更多信息,请查看https://issuetracker.google.com/issues/111195153