4

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

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

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

任何回应将不胜感激。

谢谢

4

3 回答 3

1

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

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

祝你好运!

于 2012-05-04T11:30:04.147 回答
0

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

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

您将减少大负载的影响。

Nimbus 框架正在以这种方式进行图像下载和调整大小。看一看。

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

于 2012-05-03T21:03:42.040 回答
-2

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

您使用的是哪种设备?

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

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

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

正如 Jojas 所指出的,我仍然认为答案是正确的,因为UIWevView 渲染 DOM 元素会消耗内存

于 2012-04-27T17:02:59.297 回答