gpt4 book ai didi

java - 用更新版本替换 Assets 中的旧数据库

转载 作者:行者123 更新时间:2023-11-29 20:26:15 26 4
gpt4 key购买 nike

我有一个应用程序使用 Assets 文件夹中的数据库 (SQLite),该文件夹被复制到 Android 设备上的数据/数据...文件夹中。问题在于数据库中的数据是每两个月更新一次的火车时刻表。更复杂的是,数据以五个压缩的 csv 文件的形式在线提供。我已经编写了一个 java 脚本来下载、解压缩、解析我需要的数据、构建数据库并填充它。

有没有办法更新(替换) Assets 文件夹中的数据库?届时,对 Android 应用程序数据库的简单删除将触发新数据的副本。

真正的问题:

  1. 我可以发布一个更新的数据库来替换 Assets 中的数据库吗?
  2. 我可以运行 java 脚本吗?
  3. 我是否需要在 Android 应用中运行新线程的后台编写整个内容?
  4. 仅手动安装数据库并在新 APK 中发布升级会更好吗?

想法?

最佳答案

好吧,我只是想在答案而不是评论中写下我的想法。

正如 CommonsWare 所说,您不能更新 assets/目录中的文件。它们是 APK 的一部分,也就是说,它们被编译到您的应用程序中,因此您可以替换整个应用程序或根本不替换任何内容。

您有一个 javascript 可以将包含火车时刻表信息文件的压缩 csv 文件转换为您的应用程序可以使用的数据库。我假设您将这个数据库文件放入 assets/中,然后构建您的应用程序。

由于您的应用程序需要经常刷新其数据,因此让您的应用程序下载它对我来说似乎是最明显的。下载的东西应该是随时可用的数据库,而不是压缩的 csv 文件集。

您可以将压缩的 csv 文件转换为您的开发电脑上的数据库,然后将该数据库文件放在您的应用可以下载它的位置。

您应用的服务可以非常简单。它只需要是一个静态文件服务器,它不需要是一个 API 后端。如果您租用服务器,那么 Nginx、Apache 或 IIS 可以开箱即用。如果您将数据库文件放在 Github 或 Dropbox 上,您甚至可以不用租用服务器。

当您的应用程序启动时,它会检查是否有比当前版本更新的数据库文件版本,如果有则下载它。完全下载后,它可以运行您现在从 assets/复制到 data/data 的相同代码,但它会从下载到的任何地方进行复制。

关于java - 用更新版本替换 Assets 中的旧数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32506221/

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