java - 如何修复“无法为数据库提供空上下文” - Android Room
问题描述
我正在尝试构建一个房间数据库,但它说 Context 是空的,即使我在不同的应用程序中尝试了相同的类并且它按预期工作。
@Database(entities = {City.class, User.class}, version = AppDatabase.DB_VERSION, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
static final int DB_VERSION = 1;
private static AppDatabase INSTANCE;
private static final String DATABASE_NAME = "my_db";
public abstract UserDao userDao();
public abstract CityDao cityDao();
public static AppDatabase getInstance() {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(RoomApp.getAppContext(), AppDatabase.class, DATABASE_NAME)
.allowMainThreadQueries()
.build();
}
return INSTANCE;
}
}
public class RoomApp extends Application {
private static WeakReference<RoomApp> appContext;
@Override
public void onCreate() {
super.onCreate();
appContext = new WeakReference<>(this);
AppDatabase.getInstance(); //this will init & fill db
}
public static Context getAppContext() {
return appContext != null ? appContext.get() : null;
}
}
每当我访问 AppDatabase.getInstance(); 我收到一条错误消息:“无法为数据库提供空上下文。”
解决方案
推荐阅读
- arduino - ')' 标记之前的 Arduino 错误预期主表达式
- swift - 无法分配给属性:“self”在 UIViewControllerRepresentable 中是不可变的
- typo3 - 重新激活 TYPO3 9 中的 saveDocView 按钮
- c++ - cpp 数据类型运行时溢出
- asp.net - Json POST 正文有时在服务器上被截断 - IIS 10.0 ASP.NET Core 3.0
- android - 无法在 9408 字节的 TensorFlowLite 缓冲区和 2352 字节的 ByteBuffer 之间进行转换
- android - 旋转屏幕时夜间模式出错
- arrays - 使用 Scala 进行函数式编程中的 2D 板使用什么
- bash - 将多行变量组合为bash中的列
- webgl - Webgl:设备似乎报告了不正确的 gl.MAX_TEXTURE_SIZE 值