我有 SQLite 数据库,它的大小较小(〜4 Mb ),但是包含〜50.000行。 该数据库仅被查询,无需数据操作。
房间持久性库用于管理数据检索
已经工作了多年的是以下内容
@Database(entities = {all_my_entities},version = my_version)
public abstract class IbDatabase extends RoomDatabase {
private static MyDatabase instance = null;
public static synchronized MyDatabase getInstance(Context context){
if(isFirstTime()) {
try {
context.openOrCreateDatabase("dbname",0, null);
File dbPath = context.getDatabasePath("dbname");
InputStream myInput = context.getAssets().open("dbassetname");
OutputStream myOutput = new FileOutputStream(dbPath);
// ... read and write ...
// ... close the stream
setIsFristTimeFalse();
} catch (Exception e) {
//...
}
}
if(instance == null){
try {
instance = Room.databaseBuilder(context.getApplicationContext(),
MyDatabase.class, "dbname" )
.allowMainThreadQueries()
// .addCallback(roomCallback)
.build();
} catch (java.lang.IllegalStateException e){
//...
}
}
return instance;
}
现在,在装有Android 9的Pixel 2,3设备上(据我所知 仅适用于这些功能),此功能不再有效。执行查询时,会显示错误“找不到表”。
一个可行的解决方案是将所有SQL插入项放入onCreate回调中,但这需要大约10秒钟,而复制二进制文件需要<< 1 s
是否存在一种可靠的方式来复制二进制文件,或者至少减少到初始加载时间?
感谢您的帮助