android - 如何使用 Dagger2 在 ViewModel 构造函数中注入(inject) WorkManager 实例?

标签 android viewmodel dagger-2 dagger android-workmanager

我想用 Dagger2 注入(inject)一个 WorkManager 实例,以便像这样在我的 ViewModel 中使用它

class MyViewModel @Inject constructor(workManager: WorkManager) : ViewModel()

当我尝试为 WorkManager 创建一个模块以提供它的实例时,我收到一条错误消息,提示我无法从抽象类中提供。如何在我的 ViewModel 构造函数中注入(inject) WorkManager 的实例?

最佳答案

获取 WorkManager 的实例如果没有 Dagger,您将使用 WorkManager.getInstance(context) .放WorkManager在 Dagger 的对象图中,我们只需将这段代码放在 @Provides 中方法。

@Provides
// Maybe @Singleton, though it really doesn't matter.
fun provideWorkManager(context: Context): WorkManager = WorkManager.getInstance(context)

在 Dagger 模块中使用此方法,您将能够注入(inject) WorkManager任何地方,只要您的组件可以访问 Context .

关于android - 如何使用 Dagger2 在 ViewModel 构造函数中注入(inject) WorkManager 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60874756/

相关文章:

安卓内核源代码

c++ - 普通 Qt 应用程序中的 Qt Qml

asp.net-mvc-2 - 如何仅使用 DataAnnotations 验证 Viewmodel 中的部分字段?

java - Dagger 2 麻烦@Inject-ing FirebaseMessagingService

android - 错误: [Dagger/DuplicateBindings] com. example.StartRouter被绑定(bind)多次?

android - Android Studio中的测试支持库未编译

android - 上下文菜单单击 Android

java - 如何使复选框/ slider 持久化?

android - 为什么 Android 需要 View 模型工厂?

java - Dagger 2 : When to use constructor injections and when to use field injections?