ios - 如何加载某些低优先级的请求
问题描述
我当前的项目像这样使用 NSURLSession 发出网络请求
NSURLSession* urlSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
[[urlSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
}];
到目前为止,这对我的应用程序中的所有请求都非常有效。我无法更改它,因为很多应用程序都依赖它。
现在我有一种情况,我想在同时运行更高优先级的任务时延迟加载一些图像。我想做的事:
- 如果连接速度很快,图像会与其他任务一起加载,并且很快就会出现在用户面前
- 如果连接速度很慢,其他任务会先加载,图像会延迟加载
- 其他任务的加载方式没有变化。如上所述,我想继续使用 NSURLSession。
我尝试像这样使用 NSURLSession 加载图像。但是,由于 NSURLSession 通过自己的方法选择优先级,因此图像加载会阻碍其他更重要数据的加载,从而导致用户体验不佳。但我不知道如何告诉 NSURLSession 选择某些请求具有较低的优先级。
我认为这样的事情对我有用:https ://medium.com/@prashant.gtm1001/smart-lazy-loading-in-uicollectionview-using-nsoperation-and-nsoperationqueue-in-ios-b9dfb1128048 。看起来他正在让一些图像优先于其他图像加载。但是,我不确定如何在不重新组织其他所有内容的加载方式的情况下将其添加到我的应用程序中。
堆栈溢出的其他答案似乎有这样的建议,使用 Operations 和 OperationQueues。我不确定在不重构我的应用程序的情况下添加低优先级 Web 请求加载的快速方法。
解决方案
推荐阅读
- scala - 如何在Scala中定义极限值的类型?
- c# - 如何修复此代码进入的无限循环?
- google-apps-script - 有没有办法在 gmail 插件卡中显示 gmail 可编辑的 html 消息内容?
- excel - 日期和时间最接近匹配excel
- maven - NPM 安装不适用于 maven(错误:找不到模块 '../lib/utils/unsupported.js')
- python - 在 python 中解析或运行 docker shell 命令
- angular - *cdkDragPreview 定位角材质
- perl - cpan 错误:无法获取终端大小。Win32 GetConsoleScreenBufferInfo 调用不起作用
- python - Python 导入错误:没有名为“pyscopus”的模块
- html - 如何在移动设备和桌面设备上连续显示不同的图像