2012-01-12 55 views
2

我正面臨一個奇怪的問題。我的iPhone應用程序受密碼保護,只有輸入正確的密碼後,用戶才能再次登錄。此外,該應用程序有多個屏幕。iOS設備重新啓動時的應用程序行爲(應用程序正在運行)

假設我在一個特定的屏幕上(登錄後)並關閉設備(應用程序仍在運行),打開設備並啓動我的應用程序,它從設備上顯示的屏幕開始重新啓動。密碼屏幕沒有顯示,看起來像applicationDidFinishLaunching從未被調用過。當我從後臺殺死應用程序並重新啓動它時,它正常工作。

當設備重新啓動時,應用程序不會釋放內存中的所有數據嗎?這些意見不會再被重新繪製嗎?在這種情況下,應用程序的表現如何。

編輯: 我做了什麼TriPhoenix建議。我觀察到的是,如果您很快開啓設備並啓動應用程序,則不會調用applicationDidBecomeActive委託方法。但是,如果您在啓動之前給它一些時間,一切似乎都按預期工作。是不是應該在每次啓動應用程序時調用applicationDidBecomeActive方法?

我所於測試: 操作系統:iOS版5.0.1 的Xcode 4.2.1 設備:iPhone 4S

+0

您是否確定*您正在關閉設備,而不是隻關閉和關閉屏幕?如果您在正確重啓設備後看到這種情況,這聽起來很生氣。 – mattjgalloway 2012-01-12 18:17:12

+1

是的,我正在關閉設備(「滑動電源關閉」),是的,這絕對是瘋了! :( – Vin 2012-01-12 18:19:27

+0

你是否嘗試了'硬'重置(按住這兩個按鈕,直到它重新啓動)? – dtuckernet 2012-01-12 18:27:05

回答

2

有沒有可能是你的應用程序是非常小的內存使用方面?我記得WWDC的一次談話(現在找不到正確的一個,現在不幸),在內存使用方面,一些非常小的應用程序(一個限制未公開定義,但我認爲它大約爲16 MiB內存使用量)不會在低內存條件,而是暫停到手機的閃存,以後被喚醒。我不確定這是否可以在完全關閉的情況下生存下來,但它肯定是少數幾種可能性之一。要檢查這一點,你可以嘗試通過創建一些大對象/數組來人爲地增加你的內存使用量,並查看問題是否消失。

在任何情況下,可能有更好的功能來重新激活密碼保護,例如, applicationWillEnterForeground:applicationDidBecomeActive:,因爲這應該涵蓋用戶可能返回到您的應用程序的所有可能性。

+0

我的應用程序實際上是相當龐大(超過30 MB IPA)。應用程序委託方法的問題是,我不能把一個斷點,並檢查它,因爲設備正在關機 – Vin 2012-01-12 19:53:58

+1

您可以使用當前日期或類似的東西在設備上創建一個文件,以檢查是否以及何時調用這些methodos。 – 2012-01-12 20:04:09

+0

請查看我的更新問題。 – Vin 2012-01-13 15:01:22

相關問題