无法在我的 Activity 中初始化 Room DB
Can't initialize Room DB inside my Activity
我有一个数据库:
@Database(entities = {Bas.class, Cit.class}, version = 1)
public abstract class DB extends RoomDatabase {
private static final String DB_NAME = "db";
private static DB Database;
public static DB getDatabase(Context context){
if (Database == null){
Database = Room.databaseBuilder(context, Database.class, DB_NAME)
.build();
}
return Database;
}
我刚换了
annotationProcessor "android.arch.persistence.room:compiler:VERSION"
至
kapt "android.arch.persistence.room:compiler:VERSION"
并解决了它
修改数据库class
use synchronized keyword
private static DB sInstance;
public static DB getDatabase(final Context context) {
if (sInstance == null) {
synchronized (DB.class) {
if (sInstance == null) {
sInstance = Room.databaseBuilder(context, DB.class, DB_NAME)
.build();
}
}
}
return sInstance;
}
并在activity中初始化数据库:
DB db = DB.getDatabase(getApplicationContext());
Don't forget to define the room dependencies in app.gradle:
implementation "android.arch.persistence.room:runtime:LatestVersion"
annotationProcessor "android.arch.persistence.room:compiler:LatestVersion"
我有一个数据库:
@Database(entities = {Bas.class, Cit.class}, version = 1)
public abstract class DB extends RoomDatabase {
private static final String DB_NAME = "db";
private static DB Database;
public static DB getDatabase(Context context){
if (Database == null){
Database = Room.databaseBuilder(context, Database.class, DB_NAME)
.build();
}
return Database;
}
我刚换了
annotationProcessor "android.arch.persistence.room:compiler:VERSION"
至
kapt "android.arch.persistence.room:compiler:VERSION"
并解决了它
修改数据库class
use synchronized keyword
private static DB sInstance;
public static DB getDatabase(final Context context) {
if (sInstance == null) {
synchronized (DB.class) {
if (sInstance == null) {
sInstance = Room.databaseBuilder(context, DB.class, DB_NAME)
.build();
}
}
}
return sInstance;
}
并在activity中初始化数据库:
DB db = DB.getDatabase(getApplicationContext());
Don't forget to define the room dependencies in app.gradle:
implementation "android.arch.persistence.room:runtime:LatestVersion"
annotationProcessor "android.arch.persistence.room:compiler:LatestVersion"