我需要在后台实现将一些数据发布到Web服务器的操作。只是通过“在后台”来澄清,并不是要显示一种普通的方式来显示旋转的图标,并使用AsyncTaskASIHTTPRequest[request startAsynchronous]方法将数据发布到Web服务。我需要维护一个数据队列,以便用户在应用程序中工作时,线程可以异步开始处理并发布到Web服务。

我正在寻求有关设计这样的队列的帮助,尤其是在某些极端情况下,例如用户收到调用,在发帖发生时注销应用程序,在发帖时将应用程序移到另一个应用程序发生之类的。您将如何处理这些案件?您是否可以推荐这样做的任何源代码?

谢谢,
特雅

最佳答案

最近,我开始在自己的工作中使用NSOperationQueue来控制后台网络请求。 NSOperation处理在后台线程(或前台,如果需要进行UI更新)中异步运行任务(例如网络操作)所需的大多数样板代码。

它还允许跨队列的依赖关系;例如,我在应用程序中使用两个队列:

第一个在后台调度图像下载,一次最多2个并发。每个图像下载都有一个对应的完成处理程序(作为NSBlockOperation),该处理程序取决于图像下载完成。这些操作位于[NSOperationQueue mainQueue]上,后者在主线程上进行操作,从而允许它们更新UI(特别是相应的UIImageView)。

请注意,NSOperationNSOperationQueue不仅适用于网络请求,还适用于任何可分为原子任务并同时调度的操作。

Here是苹果公司在该主题上的介绍性文档。

关于objective-c - 后台网络通话-iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6861514/

10-15 10:48