2010-07-21 55 views
3

在iOS 4的,如果我關閉&快速重新打開我的應用程序,然後( applicationWillResignActive調用之後)有一個機會, applicationWillEnterForeground將被調用以及之前 applicationDidEnterBackground和結果一個黑色的空白屏幕作爲,因爲該應用程序進入前景狀態後立即進入後臺狀態。在iOS4的applicationWillEnterForeground可能會叫applicationDidEnterBackground之前,它使問題

這是它被印在控制檯的順序:

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

如何處理這樣的情況?並確保應用程序委託方法按正確的順序執行?

在此先感謝。

+3

第1步:記錄一個錯誤!聽起來這是一個真正的問題;它應該得到修復! – jtbandes 2010-07-31 05:39:28

回答

0

這也發生在我身上。

只有在我的情況下,它有時會在我的應用程序收到本地通知時發生。

1

爲開關保留一個計數器並忽略發生順序錯誤的開關。類似這樣的:

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

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

如果前景發生在背景之前,那麼這兩種方法都不會做任何事情。

+0

謝謝,但我不認爲這會避免黑屏問題,因爲應用程序在前臺狀態之後立即進入後臺狀態。當用戶點擊主頁按鈕或應用程序圖標時,此狀態轉換完全在SDK或OS的控制之下。 – SuperGodSachin 2010-08-02 10:16:58

相關問題