将 Application 或 ApplicationContext 传递给 ViewModel?
Pass Application or ApplicationContext to ViewModel?
我有一个小问题。
我正在开发一个 Android 应用程序,我正在使用 MVVM 设计模式。
我需要将应用程序上下文传递给一些 ViewModel 和存储库,因为以下操作:实例化房间数据库、播放声音文件、将小数据保存到共享首选项中。我使用依赖注入做到了这一点。
我知道Application Context只有一个实例,所以传过去不会有内存泄漏,不像Activity Contexts
这是我的不清楚之处:我发现传递 ApplicationContext(Context 实例)有效,但也传递 Application(Application 实例)。这两个选项有什么区别?哪个更适合作为参数传递?
Application
对象 与 getApplicationContext()
.
返回的对象 实际上是同一个对象
如果您将 AndroidViewModel
与默认工厂一起使用,您将获得一个适合用作 Context
的 Application
对象(因为 Application
扩展Context
).
我有一个小问题。 我正在开发一个 Android 应用程序,我正在使用 MVVM 设计模式。
我需要将应用程序上下文传递给一些 ViewModel 和存储库,因为以下操作:实例化房间数据库、播放声音文件、将小数据保存到共享首选项中。我使用依赖注入做到了这一点。
我知道Application Context只有一个实例,所以传过去不会有内存泄漏,不像Activity Contexts
这是我的不清楚之处:我发现传递 ApplicationContext(Context 实例)有效,但也传递 Application(Application 实例)。这两个选项有什么区别?哪个更适合作为参数传递?
Application
对象 与 getApplicationContext()
.
如果您将 AndroidViewModel
与默认工厂一起使用,您将获得一个适合用作 Context
的 Application
对象(因为 Application
扩展Context
).