有没有办法在Iphone中运行时更快地从服务器获取图像(64 * 64)?

时间:2010-01-07 04:37:32

标签: iphone image-processing

我希望以更快的方式将图像提取到我的应用程序缓存中。

我通过在UIscrollView中一次加载大约25张图片来制作地图有点应用程序,其中每张图片大约需要1秒钟才能下载。

所有图像尺寸均为64KB,尺寸为256 * 256。我正在进行缓存,因此在第一次滚动后,将会有大约7-8个图像加载,每个也需要每秒。因此,在滚动地图的过程中,它会停止大约7-8秒。

有没有办法可以提高获取图像的速度,这样我就可以每秒加载至少4-6张图像?

3 个答案:

答案 0 :(得分:3)

您需要释放主线程并在后台线程上执行此操作。当你在主线程上做繁重的工作时,它会阻塞,你的应用程序将显示无响应。 (如果你不知道你正在运行什么线程,你可能在主线程上。)

看看the apple concurrency guide

答案 1 :(得分:3)

你应该使用CATiledLayer,它会旋转一个单独的线程来渲染每个tile。这是地图应用程序绘制的方式。您可以让它在绘图代码中下载图像,并且它不会阻止主线程,因此滚动将是平滑的。下载图像仍然需要时间,但如果你有一个低分辨率的代理图像,你可以在加载真实图像时显示它。

答案 2 :(得分:0)

您的网络浏览器通过并行旋转多个后台获取线程(减少整体下载时间)并在它们进入时显示地图图块来实现此目的(提供更高响应性的假象)。

通过在Firefox上安装Firebug,然后在加载复杂页面时激活它,您可以更好地感受到这一点。它将显示一个随时间变化的图表,显示每个页面组件的获取时间,这显示了并行性。