3

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

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

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

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

提前致谢。

4

2 回答 2

1

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

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

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

如果前景发生在背景之前,则这两种方法都不做任何事情。

于 2010-07-31T05:52:57.387 回答
0

这也发生在我身上。

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

于 2010-07-31T05:07:15.300 回答