NSUrlConnection, 下载文件时当你滑动UItableView或UIscrollView时,如何避免阻塞。
2014-03-11 13:44
295 查看
原文链接:http://www.pixeldock.com/blog/how-to-avoid-blocked-downloads-during-scrolling/
当你的app在现在文件时(像一个大图片),你不希望在下载期间阻塞用户界面。最常想到的办法是异步下载大文件。
最简单的后台下载文件的方法是通过NSUrlConnection.
但是如果你使用connection object 的默认设置将会在NSDefaultRunLoopMode模式下执行
也就是connection只会当app的runloop是NSDefaultRunLoopMode时执行请求。
此时当用户touch屏幕(像scrollview),运行循环将会转换NSEventTrackingRunLoopMode
模式下。这个时候,运行循环不再是NSDefaultRunLoopMode模式,connection将不会执
行请求,造成的坏的影响也就是当用户滚从屏幕时候下载将会阻塞。用户滚动列表可能会
持续较长的时间,下载将会暂停直到滚动完全结束,当用户继续滚动列表,下载将会再次
阻塞。
l幸运的是解决这个问题很简单:你可以在另一种模式下执行connection。当你在NSRunLoopCommonModes模式下执行connection,它将会在runloop所有模式下执行而不仅仅在NSEventTrackingRunLoopMode模式下(当用户滚动屏幕的时候)。
当你的app在现在文件时(像一个大图片),你不希望在下载期间阻塞用户界面。最常想到的办法是异步下载大文件。
最简单的后台下载文件的方法是通过NSUrlConnection.
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate: self startImmediately:NO]; [connection start];
但是如果你使用connection object 的默认设置将会在NSDefaultRunLoopMode模式下执行
也就是connection只会当app的runloop是NSDefaultRunLoopMode时执行请求。
此时当用户touch屏幕(像scrollview),运行循环将会转换NSEventTrackingRunLoopMode
模式下。这个时候,运行循环不再是NSDefaultRunLoopMode模式,connection将不会执
行请求,造成的坏的影响也就是当用户滚从屏幕时候下载将会阻塞。用户滚动列表可能会
持续较长的时间,下载将会暂停直到滚动完全结束,当用户继续滚动列表,下载将会再次
阻塞。
l幸运的是解决这个问题很简单:你可以在另一种模式下执行connection。当你在NSRunLoopCommonModes模式下执行connection,它将会在runloop所有模式下执行而不仅仅在NSEventTrackingRunLoopMode模式下(当用户滚动屏幕的时候)。
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
相关文章推荐
- iOS UITableView(UIScrollView)滑动到底部的判断
- iOS开发:UIScrollView如何禁止上下滑动
- three20 如何在UITableVIew 上面加一个可以滑动的广告条
- UIscrollview和UItableView结合使用(就是cell可以滑动改变图片)
- 如何给UITableView 或 UIScrollView 的content 做截图
- NSURLConnection下载文件时,如何显示进度
- 为嵌套在左右滑动的UIScrollview上的UITableView增加滑动删除
- UIScrollView ,UITableView 和 UICollectionView 如何滚动到顶部或底部
- ios 中如何应对UIScrollView快速滑动(暴力用户,暴力测试)
- ios 中如何应对UIScrollView快速滑动(暴力用户,暴力测试)
- 如何让UITableview的sectionHeader随着tableview一起滑动
- Java在编写文件下载的代码中如何避免文件名乱码情况
- iOS使用UIScrollView实现左右滑动UITableView和UICollectionView
- UIScrollView滑动与UITableView左滑删除冲突问题解决方案
- iOS UITableView(UIScrollView)滑动到底部的判断
- iOS7 如何解决iOS瀑布流(UIScrollView或UITableView)运行不流畅
- NSURLConnection下载文件时,如何显示进度
- 如何判断UIScrollView滑动方向
- iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动
- 如何解决iOS瀑布流(UIScrollView或UITableView)运行不流畅