Play 商店更新后 Android 中 Room DB 的行为

问题描述 投票:0回答:1

我在我的 Android 项目中使用预填充的房间数据库

.createFromAsset(DB_FILE_PATH)
。用户无法更改数据库的内容。当应用程序启动时,它会在
data/data/package_name...
中创建 3 个文件(.db ; .db-shm ; .db-wal),并且所有数据库读取都是从那里完成的。

当现有用户从 Play 商店更新应用程序时,

assets/database/database.db
中更新了数据库(表保持不变,仅进行了一些数据调整)这 3 个数据库文件(.db ; .db-shm ; .db-wal )会发生什么),或者更好的问题,用户是否会看到资产中的更新数据,或者仍会使用来自
data/data...
的 3 .db 文件中的旧数据?

android android-room
1个回答
0
投票

createFromAsset
处理单个文件,它不适合用于尚未完全检查点的数据库,如果 -wal 和 -shm 文件存在,则数据库尚未完全检查点。

此外,仅当数据库文件不存在时才会调用

createFromAsset
,无论资产的新版本/更改版本如何。

但是,如果应用程序可以检测到更改,您可以使用更改的资产并应用这些更改。如果更改包括对架构的更改,那么这可能足以指示已更改的资产,并且迁移可以重新复制该资产。

您可能会发现如何从应用程序中的资产文件夹更新数据库及其中的链接很有用。

如果更改需要保留用户所做的更改,那么这很可能会增加与检测用户更改数据而不是基于核心资产的数据相关的复杂性。

© www.soinside.com 2019 - 2024. All rights reserved.