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 に答える