首页 > 解决方案 > 如何加载某些低优先级的请求

问题描述

我当前的项目像这样使用 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 选择某些请求具有较低的优先级。

我认为这样的事情对我有用:https ://medium.com/@prashant.gtm1001/smart-lazy-loading-in-uicollectionview-using-nsoperation-and-nsoperationqueue-in-ios-b9dfb1128048 。看起来他正在让一些图像优先于其他图像加载。但是,我不确定如何在不重新组织其他所有内容的加载方式的情况下将其添加到我的应用程序中。

堆栈溢出的其他答案似乎有这样的建议,使用 Operations 和 OperationQueues。我不确定在不重构我的应用程序的情况下添加低优先级 Web 请求加载的快速方法。

标签: iosnsurlsessionnsoperationqueue

解决方案


推荐阅读