首页 > 解决方案 > 特定于应用程序的文件夹与外部文件夹中的 Android DB

问题描述

我有一个将数据写入数据库的 Android 应用程序。最初,当我们开始时,我们将 db 存储在特定于应用程序的文件夹中(例如 /storage/org.domain.app/db/db.sync 等)。事情没有问题。但是,问题是每次我们重新安装应用程序时这个数据库都会被清除。

因此,我们将数据库移动到应用程序外部的不同文件夹中。(现在路径类似于 /storage/data/db/db.sync)。现在,如果我们重新安装应用程序,我们仍然有旧的数据库条目。但是,现在读取和写入数据库要慢得多。

我不确定这种缓慢是否是因为数据量猛增。由于数据现在可以在多次重新安装后保持不变。

我怀疑这也可能是因为数据库现在位于应用程序外部的文件夹中。为了排除这种情况,我将数据库设置在一个特定于应用程序的文件夹中,并打算从以前的一些测试中复制整个数据库(其中包含更多数据 - 导致数据库访问速度变慢的数据量)。但是,我无法这样做。

一些问题: 1. 我无法实际访问设置数据库的文件夹。该文件夹是在 Context.MODE_PRIVATE 模式下创建的。因此,只有应用程序本身可以访问它。我尝试将其更改为 MODE.WORLD_READABLE。但是,这已被弃用并在使用时引发异常。有没有办法让这个文件夹很容易编辑?

  1. 我还尝试从 Android Studio 中的设备文件资源管理器访问数据库。我打开了现有的数据库(db.sync 文件),然后复制粘贴了我已经拥有的大型数据库。但是,看起来这种方法不允许我们复制甚至显示超过 400 KB 的信息。我拥有的数据库约为 60-70 MB。因此,这种方法也不起作用。有没有办法可以编辑 db.sync 文件?

  2. 数据库位于应用程序外部的文件夹中是否会使其变慢?特别是当条目太多时。在我的例子中,某些搜索操作是通过本地缓存发生的,并且发生在 giffy 中。但是,我们还需要将一些内容记录到数据库中,这需要很长时间。我通过在代码中添加计时器日志来解决这个问题。

  3. 还有什么,我可以做些什么来确定数据库路径是否导致了问题?

谢谢, 阿南德

标签: androidsqliteandroid-studio

解决方案


推荐阅读