我们可以通过两种方法获得数据库抛出
/**
* 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?
答案 0 :(得分:3)
inMemoryDatabaseBuilder():数据库将在系统内存中创建,如果您终止应用程序(杀死您的进程),将删除数据库并且不会保留数据。这可以在测试
时使用 databaseBuilder():数据库将在/data/data/com.your.app
中创建,并将保留。您将在生产
答案 1 :(得分:1)
RoomDatabase.Builder
。构建数据库后,应该保留对它的引用并重新使用它。RoomDatabaseBuilder<T>
。 RoomDatabase.Builder
。存储在内存数据库中的信息在进程被终止时消失。构建数据库后,应该保留对它的引用并重新使用它。RoomDatabaseBuilder<T>
。 答案 2 :(得分:1)
inMemoryDatabaseBuilder()将临时构建数据库。数据库将驻留在系统内存中,并且一旦进程被终止就会被销毁。
<强> databaseBuilder()强> 它将永久构建数据库,数据库将存储在/ data / data / ....文件夹中。