如何在 Android MVVM ViewModel 中获取上下文

新手上路,请多包涵

我正在尝试在我的 android 应用程序中实现 MVVM 模式。我已经读过 ViewModels 不应该包含特定于 android 的代码(以使测试更容易),但是我需要为各种事情使用上下文(从 xml 获取资源、初始化首选项等)。做这个的最好方式是什么?我看到 AndroidViewModel 引用了应用程序上下文,但是它包含特定于 android 的代码,所以我不确定它是否应该在 ViewModel 中。这些也与 Activity 生命周期事件相关,但我使用 dagger 来管理组件的范围,所以我不确定这会如何影响它。我是 MVVM 模式和 Dagger 的新手,因此不胜感激!

原文由 Vincent Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

我最终做了什么,而不是直接在 ViewModel 中使用 Context,而是创建了提供程序类,例如 ResourceProvider,它可以为我提供所需的资源,并且我将这些提供程序类注入到我的 ViewModel

原文由 Vincent Williams 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一种将 Context 放入 ViewModel 的方法

private val context = getApplication<Application>().applicationContext

原文由 Anshul Nema 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题