保持异步循环HTTP请求

时间:2011-03-29 14:43:45

标签: iphone multithreading asynchronous timer

我正在开发一个聚合供稿的应用程序。这些订阅源位于服务器上(并通过网站更新)。我的应用程序必须经常请求此服务器,以收集新的更新。 对服务器的每个请求都包含用户想要的订阅源列表。此外,即使应用程序处于非活动状态(后台模式),也必须完成这些更新。

在进入代码之前,我想知道哪种架构最好。

我计划有以下一个:

    appDelegate中的
  1. NSTimer didFinishLaunching
  2. NSTimer反复触发使用 ASIHTTPRequest 来请求服务器的实例
  3. 如果新请求被触发且前一个请求未完成,则前一个请求被取消
  4. 我对此有一些疑问:

    • 根据你的说法,这是一个合适的架构吗?
    • 在应用程序处于后台后,是否很难继续循环? (我不太熟悉如何做到这一点 - 但我正在阅读IPhone mutlitasking /线程指南)
    • 我应该为所有目的创建专用线程吗?为什么?

    卡里姆

2 个答案:

答案 0 :(得分:0)

iOS中的背景非常有限。您可以在后台播放音乐,获取更新的位置信息,并拨打voip电话。您还可以设置本地通知,以便在创建闹钟应用程序时可以进行后台处理。

但我认为您无法启动http请求以继续更新应用使用的数据。通过http继续更新可能并不明智,因为它会将电池直接磨掉。

答案 1 :(得分:0)

如果应用程序是后台,则用户无法使用您的Feed。周期。

但是,您可以使用推送通知推送(相当频繁且不引人注目,如果您愿意)对它们进行重要更改。您可以显示徽章,通知等。

如果您的用户再次打开该应用程序,您只需获取该Feed即可。如果您的Feed很快(应该是),则用户几乎不会注意到。

我认为这里不需要进行持续的背景轮询。一切都可以通过一点点开始轻松解决; - )

更新:回答你的问题;您的方法最多只能工作10分钟(您可以向系统询问一些后台时间)。在那10分钟之后,你将不得不制定一个计划B(在我看来,应该是你的计划A)。