【发布时间】:2014-12-18 10:23:57
【问题描述】:
我们正面临一个问题。 我们有不断下载文件的后台请求(每个文件最多 5MB)。同时,我们有一个 UI,大多数导航都需要 REST 调用。
我们限制了后台下载的数量,因此它不会窒息 RESTkit 使用的 operationQueue。
当在后台下载多个文件时,我们看到网络使用量为 1->2 MB(这是可以理解的)。
问题是:用户在应用程序中导航,每次导航都会调用一个快速 REST 调用,该调用应该返回很少的数据。但由于后台下载,UI 调用需要很长时间(约 10 秒)。
优先级没有帮助,我看到我立即进行的 UI 调用由操作队列处理(因为我们限制了下载限制并且 NSOperationQueue 有更多空间来满足其他请求。
当我们将并发 REST 下载调用限制为 5 时 - 来自 UI 的 REST 调用需要 10 秒。 当我们将并发 REST 下载调用限制为 2 时 - 一切正常。
这里的问题是,因为我们只让后台进行 2 次下载 - 下载文件的整个后台操作将永远持续下去。
最好的情况是,每个 UI 调用都将被视为最重要的网络调用,甚至暂停后台操作,只处理 UI 调用 - 然后恢复后台操作 - 但我不确定它是否可能。
还有什么办法可以解决这个问题吗?
【问题讨论】:
标签: objective-c multithreading rest restkit restkit-0.20