首页 > 解决方案 > 房间数据库,inMemoryDatabaseBuilder和databaseBuilder有什么区别?

问题描述

我们可以通过两种方法得到一个数据库抛出


 /**
 * Copyright:MyApplication
 * Author: liyang <br>
 * Date:2018/6/15 下午5:07<br>
 * Desc: <br>
 */
@Database(entities = {Pet.class ,User.class}, version = 1)
public abstract class RoomDb extends RoomDatabase {
    private static RoomDb INSTANCE;

    private static final Object sLock = new Object();

    public abstract UserDao getUserDao();

    public abstract PetDao getPetDao();

    public static RoomDb getInstance(Context context) {
        if (INSTANCE == null) {
            synchronized (sLock) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(),RoomDb.class,"Sample.db").build();
                }
            }
        }
        return INSTANCE;
    }
    public static RoomDb getInMemoreyDatabase(Context context){
        if (INSTANCE == null) {
            synchronized (sLock) {
                if (INSTANCE == null) {
                    INSTANCE = Room.inMemoryDatabaseBuilder(context.getApplicationContext(),RoomDb.class).build();
                }
            }
        }
        return INSTANCE;
    }
}

但我真的很想知道他们之间有什么区别!getInMemoreyDatabase 的运行速度是否比 Room.databaseBuilder 快?

标签: androidandroid-sqliteandroid-room

解决方案


inMemoryDatabaseBuilder():数据库将在系统内存中创建,如果你杀死应用程序(杀死你的进程),数据库将被删除并且数据不会被持久化。这可以在测试时使用。

databaseBuilder():将在其中创建数据库并将/data/data/com.your.app其持久化。您将在生产中使用它。


推荐阅读