在iOS4中,applicationDillEnterForeground可能会在applicationDidEnterBackground之前被调用,并且它会产生问题

时间:2010-07-21 14:50:36

标签: iphone ios4 uiapplicationdelegate

在iOS 4中,如果我关闭&然后快速重新打开我的应用程序(在 applicationWillResignActive 调用之后), applicationWillEnterFackground 有可能在 applicationDidEnterBackground 之前被调用,并导致黑色空白屏幕因为应用程序在前景状态之后立即进入背景状态。

这是在控制台中打印的顺序:

* 1. applicationWillResignActive
2. applicationDidEnterBackground
3. applicationWillEnterForeground
4. applicationDidBecomeActive
1. applicationWillResignActive
3. applicationWillEnterForeground
2. applicationDidEnterBackground *

如何处理这种情况?并确保应用程序委托方法以正确的顺序执行?

提前致谢。

2 个答案:

答案 0 :(得分:1)

为开关保留一个计数器并忽略以错误顺序发生的开关。像这样:

-(void) handleSwitchToBackground {
  if ( myState == 0 ) { /* do background stuff */ }
  myState += 1;
}

-(void) handleSwitchToForeground {
  myState -= 1;
  if ( myState == 0 ) { /* do foreground stuff */ }
}

如果前景发生在背景之前,那么这两种方法都没有做任何事情。

答案 1 :(得分:0)

这也发生在我身上。

仅在我的情况下,当我的应用收到本地通知时,有时会发生这种情况。