gpt4 book ai didi

android - Android Room 将预打包的数据库存储在缓存中是否正常?

转载 作者:行者123 更新时间:2023-12-04 14:47:10 24 4
gpt4 key购买 nike

我目前正在创建一个使用预打包数据库的 Android 应用程序。该数据库最初大小约为 40MB,存储在 assets/databases 文件夹中。
问题
当我查看我的应用程序正在使用多少空间时,“应用程序信息”页面显示以下内容:

  • 应用程序大小:~25mb
  • 用户数据:~3mb
  • 缓存:~45mb

  • Here is a screenshot of what I'm seeing
    我认为 ROOM 造成这种情况的原因如下:
  • 我没有在我的应用程序中缓存任何内容(使用设备文件资源管理器进行了双重检查)。
  • 当我从 SQLiteOpenHelper 迁移到 Room
  • 时,这个问题开始发生
  • 数据库的大小远大于 App Size,但它与 Cache 大小大致相同,因此作为 Cache 存储的任何内容都必须与数据库相关。
  • 每当我从我的实体中添加/删除索引时,缓存大小都会发生变化。
  • 当我清除缓存并打开应用程序时,缓存大小恢复到 ~45mb。

  • Android ROOM 将预打包的数据库存储为 Cache 是否正常? 任何帮助将不胜感激,如果您需要更多信息,请告诉我。
    谢谢
    编辑(附加信息)
    这是我在设备文件资源管理器中看到的
    Device File Explorer
    这就是我实现 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;
    }
    }

    最佳答案

    我相信您遇到的情况可能是由于以下任一原因:

  • 您使用 inMemoryDatabaseBuilder
  • 由于 Room 默认使用 WAL(预写日志),而您之前使用的是日志模式,您会感到困惑。

  • 很可能是后者。
    不同之处在于,在日志模式下,会保留对数据库所做更改的日志,因此当应用更改并需要新页面时,数据库会增长。而在 WAL 模式下,更改将应用​​于 -wal 文件,然后在点 (CHECKPOINT) 处将更改应用于数据库文件。因此,在发生 CHECKPOINT 之前,所有更改都存储在 -wal 文件中。
    例如
    enter image description here
    enter image description here
  • -shm 文件是 WAL 文件的 WAL 文件
  • 或许引用https://sqlite.org/wal.html

  • 切换到 inMemory 数据库(没有其他更改,因此插入完全相同的数据)然后:-
    enter image description here
  • 通过设备文件资源管理器
    enter image description here
  • 通过应用检查(又名数据库检查员)

  • 所以我怀疑 -wal 文件被视为缓存。

    关于android - Android Room 将预打包的数据库存储在缓存中是否正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69826326/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com