我有一个NSTimer,当我的应用程序处于活动状态时,我停止运行,稍后当应用程序再次激活时,我将重新启动。我没有意识到的是applicationWillResignActive
会在我的应用程序刚开始时触发(非常明显)。所以发生了什么是我的NSTimer错误启动(当应用程序首次启动时)。我的问题是,有没有办法检查应用程序是否从非活动状态恢复为首先启动它?
- (void)applicationWillResignActive:(UIApplication *)application {
// STOP CORE TIMER
[[[self mapController] coreTimer] invalidate];
[[self mapController] setCoreTimer:nil];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// START CORE TIMER
[[self mapController] setCoreTimer:[NSTimer
scheduledTimerWithTimeInterval:ONE_SECOND
target:[self mapController]
selector:@selector(timerDisplay:)
userInfo:nil
repeats:YES]];
}
答案 0 :(得分:4)
当应用程序从后台返回时,似乎只会触发applicationWillEnterForeground
。刚测试它,将不会在发布时调用。
<强>讨论强>
在iOS 4.0及更高版本中,此方法是 被称为过渡的一部分 活跃状态的背景。 您可以使用此方法撤消许多 你对你的改变 申请进入 背景。对此方法的调用是 不约而同地打电话给 applicationDidBecomeActive:方法, 然后从中移动应用程序 非活动状态。