0

我正在尝试在 viewModel 中使用 Work manager 来在服务器上上传文件,那么我该如何注入 WorkManager?

我试过这个https://developer.android.com/training/dependency-injection/hilt-jetpack

但它似乎未完成HiltWorkerFactory且未找到

@HiltAndroidApp
class App : Application(), Configuration.Provider {

@Inject
    lateinit var workerFactory: HiltWorkerFactory

override fun getWorkManagerConfiguration() = Configuration.Builder()
        .setWorkerFactory(workerFactory)
        .build()

}
4

2 回答 2

0

我不相信您可以将工作管理器注入您的视图模型。您可以做的是将您的 WorkManager 的工作请求排入您的视图模型中。

// Example from the documentation
val myWork: WorkRequest = // ... OneTime or PeriodicWork
WorkManager.getInstance(requireContext()).enqueue(myWork)

关于您在问题中包含的 Application 类的代码片段,我想说确保您包含所需的依赖项。

于 2020-08-12T01:04:42.713 回答
0

你可以像下面这样使用它

在你的模块中添加提供方法

  @Provides
    fun provideWorkManager(
        @ApplicationContext context: Context
    ) = WorkManager.getInstance(context)

传入您的视图模型,如下所示

@HiltViewModel

class ViewModelDemo @Inject constructor(val workManager: WorkManager)

上面的代码对我有用,希望对你有帮助:)

于 2021-10-29T10:58:13.390 回答