【问题标题】:IOS - long application launch as a result of XML parsingIOS - 由于 XML 解析而导致的长时间应用程序启动
【发布时间】:2013-05-16 13:59:04
【问题描述】:

我的应用程序基于我从网络获取的 XML 数据。 我实现了 NSXMLParser,它工作得非常好。唯一的(主要)问题是 应用程序的启动大约需要 25 秒!!! (解析器需要解析 30 个对象,每个对象有 5-7 个元素——都是 url's/strings)。 因此,开始/结束元素、解析它、将其插入到正确的数组等等需要很长时间......

使用 Gdata 或其他 api/object 解析会花费更少的时间吗?

【问题讨论】:

  • 嗯,少意味着少 1/3 :)
  • 多少字节?解析文本很快,很可能是从网络下载速度很慢。
  • 如果您指的是 xml 文件的大小,则为 4kb。
  • 25 秒的小数据有点长.... RSS 解析器不需要那么多时间。你确定这真的是导致问题的东西吗?你有没有分析过你的应用程序?还是因为你需要从解析后的 url 中下载一些东西?
  • 问题是每个“对象”都有一个图像。在我禁用解析和获取图像后 - 启动需要 6-8 秒!!!!

标签: ios xml-parsing


【解决方案1】:

在启动应用程序时,在主线程上从 Internet 下载数据非常糟糕。如果用户的连接速度很慢(或没有),iOS 实际上会在应用完成之前将其终止,因为响应时间过长。

您必须非常快速地启动您的应用,并立即向用户显示初始视图。

在您的情况下,显示一个大部分为空的视图,表明它正在访问数据。然后在后台开始文件下载和处理。处理完数据后,在主线程上更新主视图,让用户继续。

您还应该考虑为应用提供一些初始默认数据,以便即使用户无法连接到 Internet,您的应用也可以使用且有用。此默认数据也可以是上次使用该应用时下载的任何数据。

【讨论】:

  • 这是适合您的方式。还可以考虑在下载/解析中添加 som 进度条(例如 0% 到 100%)。这样一来,用户就有义务在完成之前一直走下去,而不仅仅是一个活动指示器。
  • 非常感谢您的回复。我不知道该怎么做,但我会试着找到一些关于它的东西。如果你们有任何链接或东西,我将非常感谢。
【解决方案2】:

在后台线程上解析将使您的应用更具响应性。

【讨论】:

  • 我想过,但是 - 应用程序需要数据才能启动 - 没有它就无法显示视图。据我所知,如果什么都不需要同时发生,为什么要运行一个线程。我说的对吗?
  • 您是否考虑过使用一些初始数据预加载应用程序?您可以显示该数据(即使它已过时)并在向用户显示一些视图后获取新数据。
猜你喜欢
  • 2019-09-07
  • 2015-01-10
  • 2021-08-15
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多