与创建后台计时器的情况混淆

时间:2011-12-05 18:55:56

标签: ios

我的印象是,后台任务不可能执行(除了a),如果它从操作系统请求稍微多余的时间来完成后移动到后台或b)如果它使用其中一个3 UIBackgroundModes)。

然而,这个主题正在谈论创建一个后台计时器

iOS4 Create Background Timer

然而在该主题中没有提及有关后台应用程序的一般限制,因此暗示实际上可以通过定时器实现后台执行。

请有人澄清一下。

如果你有一个应用程序调用performSelector:withObject:afterDelay,延迟时间很长(几个小时或几天),然后应用程序移动到后台并且没有UIBackgroundMode,那么当该时间过去会发生什么? / p>

2 个答案:

答案 0 :(得分:0)

为什么不测试?

我猜你的应用程序(和运行循环)将暂停,然后像往常一样继续前进,启动计时器。如果您阅读NSTimer的文档,您可能会得到有关其工作原理的提示。

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html

  

如果在长时间标注期间或在运行循环处于不监视计时器的模式下发生计时器的触发时间,则在下次运行循环检查计时器之前,计时器不会触发。因此,计时器可能发射的实际时间可能是计划发射时间之后的一段很长时间。

在这种情况下,他们谈论一个长的标注,但暂停/恢复可能会产生类似的效果。

答案 1 :(得分:0)

计时器适用于应用程序位于前台的时间。它是一个后台计时器,它在主线程的“背景”中执行。