【问题标题】:img src with large image size on UIWebView taking time to load and sometimes crashes在 UIWebView 上具有大图像尺寸的 img src 需要时间来加载并且有时会崩溃
【发布时间】:2012-04-25 06:23:52
【问题描述】:

我在 UIWebview 上显示 html 字符串,并且 html 字符串来自服务器。

在我从服务器检索到的 html 中,有 10 张带有 src 属性的大尺寸图像。这些图像的总大小超过 4 MB。当我将此 html 字符串加载到 UIWebview 中时,应用程序有时需要 4 分钟才能加载图像,有时它会崩溃。

我想知道<img src..>标签是否有任何解决方案,我可以在其中制作缩略图。

任何回复将不胜感激。

谢谢

【问题讨论】:

  • 能否附上崩溃的堆栈跟踪?
  • 您的服务器不能发送较小的图像吗?
  • 在服务器端,url被存储,就像BBCode......我们正在从BBCode转换成HTML。

标签: iphone html image uiwebview


【解决方案1】:

您应该能够通过 java/html5 在服务器端找出您的客户端是什么浏览器以及它具有哪些功能。这样,服务器可以确定要发送给客户端的适当图像大小。

我的公司已经成功地实现了这一点,iPhone 和 Android 客户端检索尺寸更小的图像,而不是笔记本电脑上的浏览器接收更大的图像。

祝你好运!

【讨论】:

    【解决方案2】:

    分配的大块内存可以在系统负载重(通过保护)时从跳板触发 sigkill 9,即使您没有重叠为任何单个应用程序运行提供的 46MB。

    1. 执行此操作的最佳方法是一次加载一张图像。
    2. 为每个单独的图像创建一个较小的版本。
    3. 释放当前加载的大图像,因为您有一个较小的版本。
    4. 下次再做一次,以此类推。

    您将减少大负载的影响。

    Nimbus Framework 正在以这种方式下载图像并调整大小。看看吧。

    对于 UIWebview,我不确定你能做什么。由于您在显示 HTML 之前获得了 HTML,您也许可以 grep <img> 标签并创建这些缩略图,将它们存储到 iPhone 中,将原始 <img> 标签的 src 路径替换为您拇指的本地 URL。

    【讨论】:

    • 我不能做这么多的过程,我在 UITableView 中有 UIWebview,我显示 UIWebview 以高度动态显示,所以它不应该根据其内容滚动。如果我做了这么多的过程,在 web 视图上显示 HTML 会太慢。
    • 我认为您应该采取另一种方法来解决您的问题。在 UITableView 中使用 UIWebview 起初令人恐惧。你想达到什么目的?我认为还有另一种方法可以解决您当前的问题。
    • 我有一个应用程序,我需要在其中显示论坛/线程/帖子,这些帖子可以是服务器端的 html,我有 API,它为我提供了保留所有内容的 HTML 代码(即位置/位置)。我需要在列表中显示所有带有描述的帖子(描述是 HTML)。
    • 你应该尝试自己解析它。使用 Web 视图会很慢。 Three20 使用内联图像进行一些 HTML 表示。 (TTStyledTextLabel)api.three20.info/interface_t_t_styled_text_label.php。它会更有效率。
    【解决方案3】:

    在 UIWebView 中解压缩时,您使用的设备可能不支持 4MB 图像。

    您使用的是哪种设备?

    4 分钟加载 4 张图片是很长的时间。你的网络很差吗?否则,它可能是错误方法的另一个指标。

    作为您,我将尝试使用原生 UIImageView 来显示图像并执行某种排队下载,也许使用 ASIHTTP

    因此,您可以在需要时加载和卸载图像,并将它们始终保存在内存中。

    正如 Jojas 所说,我仍然认为答案是正确的 UIWevView drains memory to render the DOM elements

    【讨论】:

    • 我正在加载 html 页面,并且 html 页面有 10 个带有 src 属性的 标签,并且在 src 属性中,url 来自具有非常大的图像的图像。所以这需要时间,与 UIImageView 无关,它与 UIWebView 有关。请仔细阅读问题。
    • 另外,不光是图片,我在获取图片的同时还获取了其他信息,所以不能单独显示图片,html页面应该按照设计显示。
    • 我仔细地回答了这个问题,我认为你对你的设备的要求太高了,只有一个 UIWebView 中有 10 个 large 图像,所以我想建议改变方法,避免使用一个崩溃的UIWebView 并切换到多个工作的UIImageViews。
    • 作为@JigneshBrahmkhatri 回答问题,看起来像这些问题stackoverflow.com/questions/3439728/uiwebview-size-limit
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多