检查应用程序是否从非活动状态恢复而不是首次启动?

时间:2011-05-06 18:01:46

标签: iphone objective-c cocoa-touch ios multitasking

我有一个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]];
}

1 个答案:

答案 0 :(得分:4)

当应用程序从后台返回时,似乎只会触发applicationWillEnterForeground。刚测试它,将不会在发布时调用。

  

<强>讨论

     

在iOS 4.0及更高版本中,此方法是   被称为过渡的一部分   活跃状态的背景。   您可以使用此方法撤消许多   你对你的改变   申请进入   背景。对此方法的调用是   不约而同地打电话给   applicationDidBecomeActive:方法,   然后从中移动应用程序   非活动状态。