2012-06-22 29 views
7

我在我的应用程序的NSRunLoop连接到计时器:当应用程序进入后台并返回时,我的NSRunLoop和计时器会发生什么?

NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES]; 
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes]; 

当应用进入后台,会发生什么情况该runloop?它消失了吗,这意味着我应该在applicationDidBecomeActive:中重新创建它?

回答

8

当您的应用程序被暂停时,您应该停止计时器,并在-applicationDidBecomeActive:重新启动计时器。请参阅Responding to Interruptions中的“发生中断时应采取的措施”。但是,您不必担心运行循环 - 操作系统将负责处理该部分。

+0

好的,所以我不需要手动停止runloop。我需要在applicationDidBecomeActive上创建一个:使​​用相同的代码吗? – DGund

+1

号码试试吧 - 你的运行循环应该没问题。 – Caleb

+0

请记住,调用被暂停并调用applicationDidBecomeActive并不一定是一对一的,所以不要在applicationDidBecomeActive中排列一些事情,而没有一些智能。 – Gruntcakes

相关问题