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

7
我在我的应用程序中使用了一个连接到计时器的 NSRunLoop
NSTimer *updateTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(onUpdateTimer) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:updateTimer forMode:NSRunLoopCommonModes];

当应用程序进入后台时,此运行循环会发生什么?它是否消失,这意味着我应该在applicationDidBecomeActive:中重新创建它?
1个回答

8

当您的应用程序被暂停时,您应该停止计时器,并在-applicationDidBecomeActive:中重新启动它们。请参见响应中断中的“发生中断时应该做什么”。不过,您无需担心运行循环 - 操作系统会处理该部分。


好的,那么我不需要手动停止runloop。我需要在applicationDidBecomeActive:中使用相同的代码创建一个吗? - dgund
1
不,试一下吧——你的运行循环应该没问题。 - Caleb
请记住,被挂起的调用和applicationDidBecomeActive的调用不一定是一对一的平衡的,因此在applicationDidBecomeActive中不要随意排队处理事情,需要进行一些智能处理。 - Gruntcakes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接