了解applicationSignificantTimeChange:

时间:2013-12-02 11:36:44

标签: ios objective-c cocos2d-iphone uiapplication

我发现有时我的应用程序(Cocos2d游戏)在经历了重大的时间变化之后以“越野车”的方式进行。例如:

  • 案例1:当应用程序进入后台时,几分钟后,我重新启动它,我可以看到加载图片,然后应用程序/游戏恢复。
  • 案例2 当应用程序进入后台并且在很长一段时间后更改应用程序有时会重新启动,有时不会。我仍然不清楚为什么

查看我发现的 AppDelegate 方法:

// next delta time will be zero
-(void) applicationSignificantTimeChange:(UIApplication *)application
{
    [[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}

我想知道,因为这会影响导演,导演影响动画,这个电话和案例1和案例2之间是否有链接?

1 个答案:

答案 0 :(得分:5)

这与cocos2D或applicationSignificantTimeChange:

无关

值得注意的是applicationSignificantTimeChange:

  

当白天更改时,或者由于某种原因(例如更改时区)在后台更改设备的时间时,将调用此方法。
  [Source]

我假设您提到的“重大时间变化”就在您离开游戏一段时间(即超过几分钟)时。在这种情况下,您最有可能观察到 OS多任务处理程序在设备内存不足时终止后台进程这一事实,导致您的应用程序重新启动,如您在案例2中所述。

在应用程序未重新启动的情况下,就是操作系统没有杀死您的进程。