【发布时间】:2020-02-08 22:04:33
【问题描述】:
我有一个小问题。 我正在开发一个 Android 应用程序,我正在使用 MVVM 设计模式。
我需要将应用程序上下文传递给一些 ViewModel 和存储库,因为如下操作:实例化房间数据库、播放声音文件、将小数据保存到共享首选项中。我使用依赖注入做到了这一点。
我知道Application Context只有一个实例,所以如果我通过它就不会发生内存泄漏,不像Activity Contexts。
这是我的不明确之处:我发现传递 ApplicationContext(上下文实例)有效,但应用程序(应用程序实例)也有效。这两个选项有什么区别?哪个更适合作为参数传递?
【问题讨论】:
-
您不应直接将 ApplicationContext 或 Application 实例传递给 ViewModel。将抽象传递给 ViewModel (f.i. ISoundProvider),其实现将获得 ApplicationContext 或 Application 实例。
标签: android mvvm android-context