我目前正在创建一个使用预打包数据库的 Android 应用程序。该数据库最初大小约为 40MB,存储在 assets/databases 文件夹中。
问题
当我查看我的应用程序正在使用多少空间时,“应用程序信息”页面显示以下内容:
- 应用程序大小:~25mb
- 用户数据:~3mb
- 缓存:~45mb
我认为 ROOM 造成这种情况的原因如下:
- 我没有在我的应用程序中缓存任何内容(使用设备文件资源管理器进行了双重检查)。
- 当我从 SQLiteOpenHelper 迁移到 Room 时,这个问题开始发生
- 数据库的大小比App Size大得多,但它与Cache大小大致相同,因此存储为Cache的任何内容都必须与数据库相关。
- 每当我从我的实体中添加/删除索引时,缓存大小都会发生变化。
- 当我清除缓存并打开应用程序时,缓存大小恢复到 ~45mb。
Android ROOM 将预打包的数据库存储为Cache是否正常?任何帮助将不胜感激,如果您需要更多信息,请告诉我。
谢谢
编辑(附加信息)
这是我在设备文件资源管理器中看到的
这就是我实现 Room 数据库的方式
@Database(entities = {/* entities*/}, version = 1, exportSchema = false)
public abstract class MyDatabase extends RoomDatabase {
public abstract MyDao myDao();
private static volatile Database INSTANCE;
public static Database getDatabase(final Context context) {
if (INSTANCE == null) {
synchronized (MyDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
MyDatabase.class, "database")
.createFromAsset("databases/database.db")
.build();
}
}
}
return INSTANCE;
}
}