【问题标题】:Starting an activity with large intent extras开始一项具有大量意向额外内容的活动
【发布时间】:2011-05-23 20:35:44
【问题描述】:

我正在使用 Serializeable 额外开始一项活动。这个额外包含一个自定义对象的List,它包含一堆类型,主要是字符串。我从我的项目的资产文件夹中读取数据,并用 GSON 解析它(数据是 JSON)。此文件大小约为 108KB。

在我的应用程序的整个生命周期中,所有数据都作为 Intent Extras 传递。这非常方便,因为我不必担心再次从 assets 文件夹中重新加载数据,应用程序关闭恢复都已完成,而且我不需要管理 SQLite 数据库(版本控制、查询等)。

问题: 我发现传递这些额外内容可能会变得非常慢(使用所有数据开始活动可能需要 1.5 秒或更长时间)。我似乎也无法显示任何“正在加载”对话框,因为它似乎是一个阻止调用来启动活动并附加附加内容。

问题: 我应该避免像我描述的那样传递这些额外的东西吗?使用 SQLite 数据库与这些数据进行交互是最好的选择吗?您有什么建议可以避免大量使用 SQLite 数据库/全局静态变量来访问我的应用程序数据?

将我的 JSON 数据放入数据模型类并将它们作为意图附加值传递很简单(看起来),我不想放弃它!

【问题讨论】:

  • 还要考虑公共类 MyParcelable 实现 Parcelable

标签: android serialization


【解决方案1】:

我遇到了同样的问题,并按照您已经描述的解决方案进行了操作。我使用 SQLite DB 来存储信息,然后仅传递唯一的 ID 作为 Intent Extra,并在访问 DB 时在被调用的活动上显示“正在加载...”进度对话框。

Prolly 使用 SQLite 是可行的方法。

【讨论】:

    【解决方案2】:

    为什么不将数据加载到 Application 类,在 Application 类的 onCreate 中,然后从那里的每个活动中访问?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    相关资源
    最近更新 更多