iPhone:无限期地在后台运行

时间:2011-08-09 14:53:47

标签: iphone multithreading background multitasking

我正在寻找一种方法让iPhone应用程序无限期地在后台运行。这个应用程序不会使用位置服务或VoIP,而是预先形成一个特定的任务(抱歉,但我无法明确说明任务是什么)。该任务可以与检查文件是否存在然后休眠1秒相当。出于这个问题的目的,任务应该永远运行。

任何帮助将不胜感激。据我所知,从iPhone文档中我要求的是不可能的,所以我很难过......

6 个答案:

答案 0 :(得分:1)

你是对的 - 除非你在后台运行的原因符合Apple定义的类别之一(播放音频,voip等),你的应用程序将不允许在后台无限期运行。如果您想要这样做的原因非常引人注目,那么您可能希望与Apple讨论如何让它们允许它。不过,期待一场漫长的艰难战斗。更务实的方法是寻找可以达到相同效果的方法,例如在服务器上运行后台代码或注册来自系统的各种通知。

答案 1 :(得分:0)

目前的SDK无法做到这一点。后台应用程序只能使用特定服务(音频,位置等)。

答案 2 :(得分:0)

此处描述iOS上的多任务处理。 http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5

允许的多任务处理类型为audiolocationvoip,因此听起来您的任务可能无法在iOS上执行。

答案 3 :(得分:0)

这只能在越狱环境中完成。如果这不是您的选择,那么SDK目前不支持长期后台活动而不用于音频,位置或voip目的。

答案 4 :(得分:0)

如前所述,真正的后台处理将无法满足您的要求。

但是,也许你可以利用背景通知来达到目的?

答案 5 :(得分:0)

一个令人失望的问题,但我仍然在回答你提供的逻辑。虽然在应用商店审核过程中无法接受。

while (your condition)

{ NSAutoreleasePool *aPool = [[NSAutoreleasePool alloc ] init];

  // do your desired task here

[aPool release]  }

applicationDidEnterBackground中调用此内容,查看仪器上发生的事情,以便充分了解后台工作情况。

快乐的编码!