在SQLite和原始文件之间进行选择

时间:2013-05-26 09:49:53

标签: android

我正在尝试构建一个预装数千个数据的应用程序(此数据包含歌曲和作者的歌词)。最初我想过使用SQLite,但是由于资源文件夹中预加载数据库的额外副本的问题(因为这会增加应用程序的大小)迫使我思考文件;这是将每个歌词存储在原始文件夹中,并通过我的活动上的输入流来调用它们。

我想知道哪种技术最好。我应该使用SQLite还是应该使用文件?

4 个答案:

答案 0 :(得分:0)

我目前正在制作MediaPlayer,我使用的是SQLite。之前我使用过File,速度很慢。我有350首歌曲,我在数据库中存储了很多信息。 (除了AlbumArt之外的所有内容,在运行时加载).I存储来自IDV3tag的完整音乐信息。它更难以使其正常工作但速度更快。如果您有任何问题,请联系我寻求帮助。 EIDT:如果您有大量文件使用Index,但在数据库重建时要小心将其删除。

答案 1 :(得分:0)

SQL数据库应该可以为您提供服务。

确保将批量更新作为SQL数据库事务执行。

每秒的事务数量非常少,但您可以在单个事务中更改数千行。

我还建议从FTS表开始,这将提供良好的查询性能和功能。

答案 2 :(得分:0)

APK Expansion Files可能是您的最佳选择:

  1. 它们存储在外部共享内存
  2. 你可以将它们发布到没有压缩的谷歌播放
  3. 这样可以不在设备上存储数据库的两个副本

答案 3 :(得分:0)

首先访问索引数据的大部分时间在使用SQLite DB的android中比使用行文件更快。所以,如果是我,我会选择DB选项。

但是您可以使用许多技巧来优化用户体验,例如您可以在以下阶段复制数据:

  • 考虑午餐时应立即提供的数据并先复制。 (也许是歌名表)。

  • 在后台线程中复制其余数据,用户甚至不会注意到正在发生的事情。

记住可以阻止用户几秒钟,然后给他们一个完美的体验。而不是阻止并给他们慢的体验(文件IO)。