putExtra:我应该如何处理大型数组?数据库或拆分为更小的阵列?

Posted

技术标签:

【中文标题】putExtra:我应该如何处理大型数组?数据库或拆分为更小的阵列?【英文标题】:putExtra: How should I handle large arrays? Database or split to smaller arrays? 【发布时间】:2013-05-16 11:16:36 【问题描述】:

我想知道下面的想法是什么使句子更多:

我有三个超过 5'000 个条目的数组。当我尝试将它们放入 Extra 时,我变成了 FAILED BINDER TRANSACTION:

    将这些大数组拆分成更小的数组,然后通过 putExtra 将它们交给下一个活动

    将这些条目保存到数据库并使用 sqllite 和 cursor?

提前致谢!

【问题讨论】:

使用第二种方法,extra不适用于大量数据。 【参考方案1】:

我会选择第二种情况。想象一下,由于某些原因,您必须创建 3 个以上的数组,您真的会将它们拆分成更小的数组,修改将它们传递给下一个活动的代码吗?想象一下,现在您必须访问此条目以进行另一个活动,您将不得不重新实现这些东西。这是不可维护的。

我认为在这些东西上使用额外的东西是不明智的。通过创建数据库,您将能够:

1 - 股票重要数据 2 - 随处访问它们

所以我会在数据库中创建条目。

【讨论】:

【参考方案2】:

我会选择第三个选项,它部分使用两者。

    如果您认为数据对您的应用有用,请保留数据(例如,在 DB 中)。从 Web 服务下载时,请在解析后并将其提供给 UI 线程之前立即执行此操作。 为可以从Activities 访问的列表创建一个内存缓存。有些人建议单例,这可能只是保存列表,但我更喜欢 Application 或 @Injected 中的模型类。 如果有很多这样的列表,有时您想发送不同的列表,请在Activities 之间发送一个密钥。 当在第二个Activity 从模型(或单例)中检索数据时,请确保在进程被终止并从数据库重新创建列表后不会为空。我建议不要在 UI 线程上进行 DB 操作,并让用户知道正在重新创建数据并将在几毫秒内出现。

这样您就可以避免总是从数据库中获取数据的开销,您的 UI 是响应式的,也不会做太多的打包工作。

【讨论】:

以上是关于putExtra:我应该如何处理大型数组?数据库或拆分为更小的阵列?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理数据集中的空白单元格

如何处理大型mongodb集合

蜡炬教育:如何处理机器学习中大型数据的加载问题?

不知道如何处理大型数据库

GreenPlum 如何处理多个大型连接和同时工作负载?

如何处理来自大型 ResultSet 的数据而不将它们全部加载到内存中?