我正在尝试构建一个预加载数千个数据的应用程序(这些数据包含歌曲的歌词和作者)。最初我想使用 SQLite,但由于资产文件夹中预加载数据库的额外副本存在问题(因为这会增加应用程序的大小),我不得不考虑文件;即将每个歌词存储在原始文件夹中,并通过我的活动的输入流调用它们。
我想知道哪种技术最好。我应该使用 SQLite 还是应该使用文件?
我正在尝试构建一个预加载数千个数据的应用程序(这些数据包含歌曲的歌词和作者)。最初我想使用 SQLite,但由于资产文件夹中预加载数据库的额外副本存在问题(因为这会增加应用程序的大小),我不得不考虑文件;即将每个歌词存储在原始文件夹中,并通过我的活动的输入流调用它们。
我想知道哪种技术最好。我应该使用 SQLite 还是应该使用文件?
首先,在大多数情况下,使用 SQLite DB 在 android 中访问索引数据比使用行文件更快。所以如果是我,我会选择 DB 选项。
但是您可以使用许多技巧来优化 UX,例如,您可以在以下阶段复制数据:
想想应该在午餐时立即可用的数据并首先复制它。(也许歌曲名称表)。
在后台线程中复制其余数据,用户甚至不会注意到发生了什么。
请记住,可以将用户屏蔽几秒钟,然后再为他们提供完美的体验。而不是不阻塞并给他们缓慢的体验(文件IO)。
我目前正在自己制作 MediaPlayer,并且我使用 SQLite。我以前用过File,速度很慢。我有 350 首歌曲,我在数据库中存储了很多信息。(除了 AlbumArt 之外的所有内容,在运行时加载)。我存储来自 IDV3tag 的完整音乐信息。使其正常工作有点困难,但速度要快得多。如果您有任何问题,请联系我寻求帮助。EIDT:如果您有大量文件,请使用索引,但要小心在数据库重建时将其删除。
SQL 数据库应该可以很好地为您服务。
确保将批量更新作为 SQL 数据库事务执行。
每秒的事务数非常少,但您可以在单个事务中更改数千行。
我还建议从 FTS 表开始,这将提供良好的查询性能和功能。
APK 扩展文件可能是您的最佳选择: