我正在使用 MVVM 构建我的 Android 应用程序,我需要将模型连接到数据库。我使用的是 SQLiteOpenHelper 而不是 Room,为了连接到数据库,我需要上下文。但由于这是一门非 Activity 类(class),我很难得到它。
我当前的解决方案如下所示,但我不断收到内存泄漏警告。
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/