我希望以更快的方式将图像提取到我的应用程序缓存中。
我做了一个地图类的应用程序,在UIscrollView中一次加载大约25张图片,其中每张图片需要大约1秒的下载时间。
所有图像大小为64KB,大小为256*256。我正在做缓存,所以当我第一次滚动时,将有大约7-8个图像要加载,这也需要每一秒。因此,在滚动地图的过程中,它会停下来大约7-8秒。
有没有办法可以提高获取图像的速度,这样我每秒至少可以加载4-6张图像?
发布于 2010-01-07 18:14:26
您应该使用CATiledLayer,它会产生一个单独的线程来渲染每个平铺。这就是地图应用程序进行绘图的方式。您可以让它下载绘图代码中的图像,并且它不会阻塞主线程,因此滚动将是平滑的。下载图像仍然需要时间,但如果你有一个低分辨率的代理图像,你可以在加载真实图像时显示出来。
发布于 2010-01-07 12:56:29
您需要释放主线程,并在后台线程上执行此操作。当你在主线程上做繁重的工作时,它会阻塞,你的应用程序将显示为无响应。(如果你不知道你在哪个线程上运行,你的可能是在主线程上。)
看看the apple concurrency guide吧。
发布于 2010-01-07 13:16:18
您的web浏览器通过并行启动多个后台获取线程(减少整体下载时间)和显示传入的地图图块(给人以更高响应性的错觉)来做到这一点。
你可以通过在Firefox上安装Firebug,然后在加载一个复杂的页面时激活它来获得更好的体验。它将向您显示一段时间内每个页面组件需要多长时间才能被获取的图表,这显示了并行性。
https://stackoverflow.com/questions/2018235
复制相似问题