NSTimers在后台运行?

时间:2011-05-05 16:52:12

标签: iphone objective-c cocoa-touch nstimer

我的印象是,在应用程序调用{​​{1}}后,NSTimer根本无法正常工作。然而,我似乎现有的NSTimers(即在应用程序重新激活之前创建的那些)将继续运行,并且它唯一无法在此状态下安排的新NSTimers,是否有人可以确认这一点?

我也假设它很好(Apple似乎也这么说),当你的应用程序调用{​​{1}}时,你应该禁用任何NSTimers并在调用applicationWillResignActive时再次启动它们,这是否会使感?

1 个答案:

答案 0 :(得分:20)

当应用程序处于非活动状态但仍在前台时(例如当用户获得推送通知或按下睡眠按钮时),您的应用程序仍在完全运行。你创建的任何你没有停止的计时器都会正常启动。但是,当您的应用程序转到后台时,如果您未注册运行后台线程,则所有执行都将停止。如果是计时器触发的时间,则不会发生,因为运行循环未运行。但是,当您的应用程序重新打开时,任何应该在后台触发的计时器都将立即被触发。 Apple建议在applicationWillResignActive进行清理,这样当用户不专注于你的应用程序时你就不会做很多工作,但是你肯定想在去往后台之前禁用计时器,这样他们就不会全部开火重新打开申请时,一个接一个地。