1

我需要将文件上传到 iOS 应用程序中的服务器。我希望在应用程序运行时发生这种情况,但是以并发方式(在单独的线程上),因此上传对应用程序的用户是不可见的。

在“背景”中运行任何东西似乎都很复杂,所以我想确保我的问题是正确的。我想知道的是:

1)当应用程序在前台时,我可以有一个“后台线程”,其中包含一个计时器,当数据可用时将数据上传到服务器?

2)如果是这样,当用户将另一个应用程序带到前台时,上传任务会发生什么?

3)如果是这样,实现这种并发的最佳实践是什么?冷下来,线程将是我首先考虑的事情,但可能有更好、更简单的方法来实现这一点。

谢谢您的帮助!

4

2 回答 2

3

答案是 Grand Central Dispatch 或 Operation Queues。有关更多详细信息,请参阅并发编程指南

1)通过使用调度队列或操作队列,您无需担心有计时器或轮询数据。系统处理所有这些细节。当您获得要上传的数据时,您创建一个简单的上传任务,将该任务发送到队列,队列负责所有调度。

2) 队列将被暂停。当您的应用程序恢复时,队列也将恢复。您的任务必须能够处理可达性问题和网络超时。此外,您必须记住,您的应用程序可能随时被终止。在进入后台之前保存状态。

3)不要使用线程;使用队列。

于 2012-06-24T16:07:17.000 回答
1

1)当应用程序在前台时,我可以有一个“后台线程”,其中包含一个计时器,当数据可用时将数据上传到服务器?

是的,可以创建一个后台工作线程,在数据可用时启动

2)如果是这样,当用户将另一个应用程序带到前台时,上传任务会发生什么?

这取决于,请阅读此以获取更多信息

3)如果是这样,实现这种并发的最佳实践是什么?冷下来,线程将是我首先考虑的事情,但可能有更好、更简单的方法来实现这一点。

正如您所说,最好的方法是使用 NSThread 和线程机制

于 2012-06-24T15:59:29.777 回答