android - 房间数据库,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 快?
解决方案
inMemoryDatabaseBuilder():数据库将在系统内存中创建,如果你杀死应用程序(杀死你的进程),数据库将被删除并且数据不会被持久化。这可以在测试时使用。
databaseBuilder():将在其中创建数据库并将/data/data/com.your.app
其持久化。您将在生产中使用它。
推荐阅读
- ceph - 如何在 LVM 卷上扩展 Ceph OSD
- c++ - 您如何在 timespec 结构中表示 -1 纳秒?
- python - 如何在 app.route 中分离烧瓶文件夹?
- c - 如何对使用 G_DECLARE_DERIVABLE_TYPE (glib/gobject) 定义的类进行子类化
- laravel - Vue 3 模板片段创建错误
- r - 使用样本权重的分位数
- javascript - 2021年导入解析json的终极方法是什么
- pyspark - 无法在 cdsw 上安装 PyArrow
- javascript - GraphQL 代码生成器未在 Next.js 中生成代码
- netflix-zuul - CommonChannelConfigKeys 定义的空闲超时