如何访问 ViewModel 中的 SharedPreferences?

How to access SharedPreferences in a ViewModel?

我正在使用 MVVM 开发 Android 应用程序。我需要在 ViewModel 中访问 SharedPreferences,但我不知道该怎么做。

我知道继承 AndroidViewModel 时可以访问上下文,但我想知道是否可以以及如何使用 DI 容器(Dagger 2)访问上下文。

有可能。正如您提到的,您的 ViewModel 必须扩展 AndroidViewModel 然后调用 getApplication() 并在访问 SharedPreferences.

时将其用作上下文

并且为了在 ViewModel 中使用 Dagger 2:您不能通过参数或字段注入直接在 ViewModel 中注入任何内容,因为您将需要使用 ViewModel Factory 并首先在那里注入对象,然后将它们传递给任何你想要的 ViewModel


要了解有关将 Dagger 2ViewModels 一起使用的更多信息,请参阅 this article


更新(2020-08-06):

可以在 ViewModels 中使用 Dagger 2 注入,查看 Kotlin Clean Architecture 库示例如何使用它。

https://github.com/android10/Android-CleanArchitecture-Kotlin