【问题标题】:What is most efficient way for loading big amount of data from CSV file in Android?在 Android 中从 CSV 文件加载大量数据的最有效方法是什么?
【发布时间】:2015-02-21 08:19:25
【问题描述】:

我有 15MB 的 csv 文件(350 000 行)。我在加载这些数据时遇到问题。我试过了:

1) 将文件数据加载到内存:非常快(大约 7 秒),但我收到 OutOfMemory 错误并且操作系统关闭了我的应用程序。即使没有这个错误,在每次应用程序启动期间加载数据 7 秒也不是完美的解决方案。

2) 加载到 SQLite DB:会很完美(只需要加载一次),但是加载过程需要 1 分钟以上(我正在使用 db.begintransaction/endtransaction 来加快过程)。

3) 我无法发布带有预加载数据的应用程序,因为此 CSV 包含应定期更新的提要。

我正在使用三星 S3 测试应用程序。不是最慢的智能手机。

-----更新

可能有特殊工具可以将 CSV 数据批量加载到数据库中??

【问题讨论】:

    标签: java android csv


    【解决方案1】:

    我无法发布带有预加载数据的应用,因为此 CSV 包含应定期更新的提要。

    据我了解,您需要定期使用服务执行此后台操作,并与服务器同步数据,同时将收到的记录插入/更新到 SQLite 数据库。

    当数据库第一次为空时,您可以给进度条提供适当的消息,表明正在检索数据并将其复制到本地数据库中。完成此操作后,显示已收到的数据。

    稍后,您可以使用SyncAdapter 将您的应用程序数据库与服务器保持同步或定期运行服务。

    【讨论】:

    • 是的,这是可能的,但正如我所说,第一次加载需要超过 1 分钟。我不认为用户会乐于看到超过一分钟的进度条。
    • @Denis 如果您的数据第一次对每个用户都相同,那么您可以将其预加载到 sqlite db。
    • @Denis,你必须优先考虑。您必须对用户希望首先查看哪些数据进行有根据的猜测,然后首先加载该数据。其余的,您可以在用户查看第一批数据时在后台下载。而且您的用户使用您的应用的次数越多,您就能越准确地预测他们希望首先看到的数据类型。
    • @TGMCians 是的,所有用户的数据都是相同的,但首先可下载的应用程序包的大小会更大,据我所知,预加载的 sqllite db 不是 Android 的“官方”方法。
    • @ StephanBranczyk 是的,我同意,应该进行优先级排序,但这当然不是完美的解决方案,因为要确定优先级,我需要花时间解析 CSV 文件。
    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 2013-03-07
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多