首页 > 解决方案 > 将 Application 或 ApplicationContext 传递给 ViewModel?

问题描述

我有一个小问题。我正在开发一个 Android 应用程序,并且正在使用 MVVM 设计模式。

我需要将应用程序上下文传递给一些 ViewModel 和存储库,因为如下操作:实例化房间数据库、播放声音文件、将小数据保存到共享首选项中。我使用依赖注入做到了这一点。

我知道Application Context只有一个实例,所以如果我通过它就不会发生内存泄漏,这与Activity Contexts不同。

这是我的不明确之处:我发现传递 ApplicationContext(上下文实例)有效,但也可以传递 Application(应用程序实例)。这两个选项有什么区别?哪一个更适合作为参数传递?

标签: androidmvvmandroid-context

解决方案


Application对象与 .返回的对象实际上是相同的对象getApplicationContext()

如果您使用AndroidViewModel带有默认工厂的 an ,您将获得一个Application适合用作 a 的对象Context(作为Applicationextends Context)。


推荐阅读