[英]How to Inject Work Manager in ViewModel using Hilt
我正在嘗試在 viewModel 中使用工作管理器在服務器上上傳文件,那么如何注入工作管理器?
我試過這個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()
}
我不相信您可以將工作管理器注入您的視圖 Model。您可以做的是將您的工作管理器的工作請求放入您的視圖 Model 中。
// Example from the documentation
val myWork: WorkRequest = // ... OneTime or PeriodicWork
WorkManager.getInstance(requireContext()).enqueue(myWork)
關於您在問題中包含的應用程序 class 的代碼片段,我會說確保您包含了所需的依賴項。
您可以像下面這樣使用它
在您的模塊中添加提供方法
@Provides
fun provideWorkManager(
@ApplicationContext context: Context
) = WorkManager.getInstance(context)
如下所示傳入您的視圖模型
@HiltViewModel
class ViewModelDemo @Inject constructor(val workManager: WorkManager)
上面的代碼對我有用,希望對你有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.