Dagger 在 ModelView 中注入 Context

Dagger inject Context in a ModelView

我正在尝试在我的 ModelView 中注入 Context,但我有点困惑:

这是我的 Module,我发给他一个 Application 供以后使用此上下文,但我不知道它来自此 Application 或如何拿走:

@Module
class module {
    @Provides @Singleton fun appContext(application: Application): Context{
        return application
    }
}

这是我的 Component:

@Component(modules = [module::class])
interface component {
    fun providesApplication(): Application
}

最后,我不知道如何在我的 ViewModel 中注入它,因为它没有注入它的构造函数。

我应该如何将上下文注入我的 ViewModel

已经有 build-in ViewModel 和上下文,用 AndroidViewModel

替换从 ViewModel 的继承

参见:https://developer.android.com/reference/android/arch/lifecycle/AndroidViewModel

或者,您可以尝试这样的操作:

class YourViewModel @Inject constructor(context:Context) : ViewModel()

只是一个建议,如果没有别的办法,听我说完...

var context: Context? = null

fun initViewModelWithContext(context: Context) {
    this.context = context
}

如果您找不到使用匕首的解决方案,您也可以这样做。然后你所有的函数都可以使用上下文的这个本地实例,并且这个 ViewModel 将是 destroyed/created 因为它需要所以它不会导致任何内存问题