我需要在后台实现将一些数据发布到Web服务器的操作。只是通过“在后台”来澄清,并不是要显示一种普通的方式来显示旋转的图标,并使用AsyncTask
或ASIHTTPRequest
的[request startAsynchronous]
方法将数据发布到Web服务。我需要维护一个数据队列,以便用户在应用程序中工作时,线程可以异步开始处理并发布到Web服务。
我正在寻求有关设计这样的队列的帮助,尤其是在某些极端情况下,例如用户收到调用,在发帖发生时注销应用程序,在发帖时将应用程序移到另一个应用程序发生之类的。您将如何处理这些案件?您是否可以推荐这样做的任何源代码?
谢谢,
特雅
最佳答案
最近,我开始在自己的工作中使用NSOperationQueue
来控制后台网络请求。 NSOperation
处理在后台线程(或前台,如果需要进行UI更新)中异步运行任务(例如网络操作)所需的大多数样板代码。
它还允许跨队列的依赖关系;例如,我在应用程序中使用两个队列:
第一个在后台调度图像下载,一次最多2个并发。每个图像下载都有一个对应的完成处理程序(作为NSBlockOperation
),该处理程序取决于图像下载完成。这些操作位于[NSOperationQueue mainQueue]
上,后者在主线程上进行操作,从而允许它们更新UI(特别是相应的UIImageView
)。
请注意,NSOperation
和NSOperationQueue
不仅适用于网络请求,还适用于任何可分为原子任务并同时调度的操作。
Here是苹果公司在该主题上的介绍性文档。
关于objective-c - 后台网络通话-iOS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6861514/