无法在我的 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"