2012-05-21 35 views
1

我正在創建一個簡單的應用程序,它在主線程上執行一些任務。我在NSLog中打印過程,因此我可以理解我的過程是否正在運行。applicationDidEnterBackground&applicationWillResignActive不被調用

現在,當我按Home鍵,而無需啓動程序(當我在一個按鈕點擊處理將啓動)應用程序在後臺進入和我的兩個方法applicationDidEnterBackground & applicationWillResignActive被調用。

但是當我第一次點擊我的按鈕,然後進程在主線程啓動後,如果我按Home按鈕,這兩種方法都不會被調用。所以我的應用程序無法知道該應用程序是否在後臺輸入。

即使在那之後,當我再次激活應用程序,它只顯示狀態欄的黑色屏幕。

  1. 爲什麼會發生這種情況?
  2. 爲什麼應用程序不能進入後臺?
  3. 爲什麼蘋果的方法不被調用?
  4. 有沒有辦法解決它?

UPDATE 這裏是我AppDelegate類代碼

- (void)applicationWillResignActive:(UIApplication *)application 
{ 

} 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 

} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 

} 

所有的方法都沒有實現。

在此先感謝。

+0

你可以在你的項目上發佈你的委託類代碼嗎? – Dinesh

+0

你的流程是什麼樣的? – borrrden

+0

總是嘗試把一些代碼? –

回答

3

我正在創建一個簡單的應用程序,它在主線程上執行一些任務。

不要在主線程上執行長時間運行的操作。

委託回調發生在主線程上。如果主線程忙,那麼只有當你返回到「運行循環」時,回調纔會發生。

當前景化你的應用程序時,操作系統實際上會顯示一個屏幕截圖,如果可用的話,會回退到啓動圖像(Default.png)。屏幕截圖是在-applicationDidEnterBackground:返回後進行的,它允許您自定義保存的內容(出於安全原因您可能想要這樣做,或者隱藏在重新啓動時(例如倒數計時器)可能無法顯示的UI元素)。

黑屏可能是因爲你的應用沒有啓動圖像。如果您的應用程序需要超過10秒左右的時間才能進入後臺(並且由於主線程被阻止),它會被終止。除了調試器被附加並捕獲SIGKILL之外,所以很容易錯過,除非你在看Xcode。

2

也有一些情況

如果UIApplicationExitsOnSuspend關鍵應用程式的Info.plist設置爲true,則applicationWillResignActive方法不是當用戶點擊home鍵調用。並可能有其他的東西。檢查這裏的密鑰Apple keys,看看你添加到plist的新東西。並且沒有其他情況下您說您的委託方法未調用。由於項目採取了適當的行爲,也可能會有一段時間。嘗試清理你的項目並重建。

0

這聽起來很奇怪,但對於那些有幫助的人來說。我遇到了同樣的問題,並清理了我的項目,然後又重新開始工作。

相關問題