如何访问 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 2 与 ViewModels
一起使用的更多信息,请参阅 this article。
更新(2020-08-06):
可以在 ViewModels
中使用 Dagger 2 注入,查看 Kotlin Clean Architecture 库示例如何使用它。
https://github.com/android10/Android-CleanArchitecture-Kotlin
我正在使用 MVVM 开发 Android 应用程序。我需要在 ViewModel
中访问 SharedPreferences
,但我不知道该怎么做。
我知道继承 AndroidViewModel
时可以访问上下文,但我想知道是否可以以及如何使用 DI 容器(Dagger 2)访问上下文。
有可能。正如您提到的,您的 ViewModel
必须扩展 AndroidViewModel
然后调用 getApplication()
并在访问 SharedPreferences
.
并且为了在 ViewModel
中使用 Dagger 2:您不能通过参数或字段注入直接在 ViewModel
中注入任何内容,因为您将需要使用 ViewModel Factory
并首先在那里注入对象,然后将它们传递给任何你想要的 ViewModel
。
要了解有关将 Dagger 2 与 ViewModels
一起使用的更多信息,请参阅 this article。
更新(2020-08-06):
可以在 ViewModels
中使用 Dagger 2 注入,查看 Kotlin Clean Architecture 库示例如何使用它。
https://github.com/android10/Android-CleanArchitecture-Kotlin