【发布时间】:2019-11-10 13:41:47
【问题描述】:
我有一个应用程序,我在其中声明了一个 WorkManager,并且我的应用程序启动后,doWork() 覆盖的函数会被调用 3 或 4 次,而无需在代码中随时要求系统启动它。 ..
我已经检查过不会在应用程序中完成对 WorkManager 的引用。 App.kt 文件中只有一个(扩展 Application())。
在 App.kt 中:
class App : Application(){
companion object {
var appSyncRepository = AppSyncRepository()
}
}
在 AppSyncRepository.kt 中:
class AppSyncRepository {
}
class AppSyncRepositoryWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
我希望工作人员不会被调用,因为我现在既没有声明任何 OneTimeWorkRequestBuilder 也没有声明任何 PeriodicWorkRequestBuilder。
【问题讨论】:
-
您以前的应用中是否有任何
PeriodicWorkRequest?即使您删除PeriodicWorkRequest并重新安装您的应用程序,您已经排队的PeriodicWorkRequest也不会被销毁,除非您取消它。您的所有定期工作都将在应用程序进程启动时调用。此外,似乎有多个相同作业的请求排队。使用enqueueUniquePeriodicWork避免重复工作。 -
不,我没有在 PeriodicWorkRequestBuilder 和 OneTimeWorkRequestBuilder 中添加任何代码。
-
我认为 Sanlok Lee 是真实的,在分析了这个问题之后(几个月前),如果我没记错的话,你写的就是解释。
标签: android kotlin background intervals worker