簡體   English   中英

如何使用 Hilt 在 ViewModel 中注入工作管理器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM