在UIWebView上具有大图像大小的img src需要时间来加载并且有时会崩溃

时间:2012-04-25 06:23:52

标签: iphone html image uiwebview

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

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

我想知道,如果<img src..>标签有任何解决方案我可以制作缩略图。

任何回复都会非常感谢。

由于

3 个答案:

答案 0 :(得分:1)

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

我的公司已成功实施此功能,iPhone和Android客户端检索尺寸较小的图像,而不是接收较大图像的笔记本电脑上的浏览器。

祝你好运!

答案 1 :(得分:0)

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

  1. 执行此操作的最佳方法是一次加载一个图像。
  2. 对于每张图片,请创建一个较小的版本。
  3. 释放当前加载的大图片,因为它的版本较小。
  4. 下次再做,依此类推。
  5. 您将减少大负荷的影响。

    Nimbus Framework正在进行图像下载并以此方式调整大小。看看。

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

答案 2 :(得分:-2)

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

您使用的是哪种设备?

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

作为您,我将尝试使用原生UIImageView来显示图片并执行某种排队下载,可能会使用ASIHTTP

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

正如Jojas指出的那样,我仍然认为答案是正确的UIWevView drains memory to render the DOM elements