android - 将 Application 或 ApplicationContext 传递给 ViewModel?
问题描述
我有一个小问题。我正在开发一个 Android 应用程序,并且正在使用 MVVM 设计模式。
我需要将应用程序上下文传递给一些 ViewModel 和存储库,因为如下操作:实例化房间数据库、播放声音文件、将小数据保存到共享首选项中。我使用依赖注入做到了这一点。
我知道Application Context只有一个实例,所以如果我通过它就不会发生内存泄漏,这与Activity Contexts不同。
这是我的不明确之处:我发现传递 ApplicationContext(上下文实例)有效,但也可以传递 Application(应用程序实例)。这两个选项有什么区别?哪一个更适合作为参数传递?
解决方案
该Application
对象与 .返回的对象实际上是相同的对象getApplicationContext()
。
如果您使用AndroidViewModel
带有默认工厂的 an ,您将获得一个Application
适合用作 a 的对象Context
(作为Application
extends Context
)。
推荐阅读
- reactjs - 如何将 React.Component 与 renderToString 方法一起使用?
- python - 如何使用 Python 3 创建新的谷歌电子表格并将工作表添加到谷歌驱动器中的特定位置
- knuth - Mastermind 的 Donald Knuth 算法——我们能做得更好吗?
- javascript - 如何使用 JavaScript 中的过滤器根据用户输入过滤整个数组?
- python - 将可选事件传递给具有默认参数的方法
- bash - 单行排除异常模式
- python - 仅当两个值都存在时才加入 Pandas 中的列
- tableau-api - 无法在 tableau 中的图表上显示计算
- php - 使用 php 从 sql 获取日期时间
- angular - 如何在 Angular 材质中使 mat-checkbox 不可点击