2011-05-20 91 views
8

我注意到我的視圖控制器沒有得到他們的didReceiveMemoryWarning方法時,我的應用程序在iPad上的模擬器背景狀態調用。更具體地講,我看我的日誌調用applicationDidEnterBackground,然後我打的「模擬內存警告」按鈕,然後我注意到一個奇特的沒有任何didReceiveMemoryWarning電話。沒有得到didReceiveMemoryWarning當應用程序在後臺

然而,當我把應用回到前臺我突然得到didReceiveMemoryWarning通話,就好像它已經排隊。

我感到困惑在這裏,如果我的應用程序其實在後臺,或者如果它只是平了暫停的。有什麼方法可以在模擬器中講述嗎?另外,如果它還沒有被暫停,並且真的只是在後臺,那麼我會覺得我無法處理didReceiveMemoryWarning這是愚蠢的。因爲那意味着只有前臺應用程序可以處理內存警告以釋放空間,這當然是奇怪的,因爲前臺應用程序可能只是可能運行的幾十個應用程序中的一個,並且如果它們更有意義都可以釋放內存。

不管怎樣,主要問題是:爲什麼不是我在後臺狀態越來越didReceiveMemoryWarning?而且,我真的被暫停了嗎?我怎麼知道?

回答

8

如果您未在後臺啓動後臺任務或執行VOIP,位置跟蹤或音頻,則應用程序在applicationDidEnterBackground後暫停。它不會收到任何通知。任何通知都會保留(即使應用程序被暫停後發生的通知),並在應用程序再次前往應用程序時發送給應用程序。

+0

+1,但官方消息來源的鏈接很不錯... – 2013-07-26 11:22:41

+0

請加個源代碼。根據我個人的經驗,情況並非如此,背景中可以看到記憶警告。 – prolfe 2018-01-30 22:17:55

0

我不認爲是這樣。我可以在後臺訪問didReceiveMemoryWarning代碼。一旦系統產生低內存信號而不是一個好公民,我們應該釋放內存。這也有助於我們的應用程序從系統中終止。

相關問題