java - MVVM - 获取模型类中的上下文

标签 java android mvvm android-sqlite viewmodel

我正在使用 MVVM 构建我的 Android 应用程序,我需要将模型连接到数据库。我使用的是 SQLiteOpenHelper 而不是 Room,为了连接到数据库,我需要上下文。但由于这是一门非 Activity 类(class),我很难得到它。 mvvm

我当前的解决方案如下所示,但我不断收到内存泄漏警告。

public class MyApplication extends Application {

    private static MyApplication mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
    }

    public static MyApplication getContext() {
        return mContext;
    }
}

有更好的解决方案或最佳实践吗?

编辑:不使用 Dagger

最佳答案

您的解决方案有效,但违反了 MVVM 模式中的依赖倒置规则。因此,您应该使用构造函数注入(inject)或像 Dagger 这样的框架来实现依赖注入(inject)模式,以将上下文传递到模型层。您的内存泄漏也是因为违反了此规则,并且通过实现依赖注入(inject),不需要在不同层中进行多次访问的全局变量,这可能会导致内存泄漏。

关于java - MVVM - 获取模型类中的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436077/

相关文章:

java - org.springframework.data.mapping.model.MappingInstantiationException : Failed to instantiate object with new boolean field 问题

java - JFrame JPanel 刷新/更新/重绘

android - SwipeRefreshLayout 在将支持库更新到 23.2.0 后阻止 AppBarLayout 向下滚动并显示刷新圈

c# - 绑定(bind) List<string> 到 ComboBox

java - Rundeck 在 Amazon VPC 中时不发送电子邮件?

Android - 如何为具有自定义适配器的 GridView 中的第一个项目添加背景图像?

android - 在安卓中实现oauth

wpf - 在 MVVM 中接收命令参数值

c# - MVVM绑定(bind)很多属性

java - 如何制作 Java.awt.Robot 类型的 unicode 字符? (可能吗?)