2010-07-14 63 views
1

我的應用程序使用NSUserDefaults來存儲一些值,以便它可以在應用程序更新時恢復它們或退出背景。後臺程序會自動保存我的整數值,但如果用戶退出啓動程序,則數字也會丟失,並且我猜想在進入後臺處理時不會調用ViewDidUnload方法。有沒有辦法可以在應用程序卸載時保存NSUserDefaults。另外,ViewDidLoad方法也有同樣的問題,它不會從背景中喚起。這是什麼方法?如何判斷iPhone應用程序是否通過背景啓動

P.S.到目前爲止,我的應用程序需要保存的唯一數據是屏幕計數的整數。

更新:UIApplicationDidEnterBackgroundingNotification非常適合您的建議!

+0

謝謝你們!我很驚訝。我愛堆棧溢出,我從來沒有去過任何其他地方,你可以得到這麼多相關的幫助,而且這麼快。 – SeniorShizzle 2010-07-14 06:58:58

回答

1

無法在數據最終死亡之前保存數據,但可以在applicationDidEnterBackground:應用程序委託中保存狀態以防萬一。

還有一個applicationDidBecomeActive :,但沒有理由從那裏加載保存數據,因爲當它從後臺應用程序調用時,數據將以任何方式保存。

+0

如果您不想在應用程序委託中使用邏輯,還會發出DidEnterBackground的通知。 – drawnonward 2010-07-14 06:15:04

+0

好的,所以你告訴我在applicationDidEnterBackground上調用NSUserDefaults:每一次,然後只從viewDidLoad的默認值更新?天才! – SeniorShizzle 2010-07-14 06:22:41

1

您不能分辨您的應用程序是否從後臺啓動,至少目前如何設置,因爲如果您的應用程序代表從跳板啓動,它將獲得相同的事件序列。

正如Joost所說,你應該保存任何你需要在applicationDidEnterBackground回調中恢復狀態;從本質上講,你應該認爲這是你的應用程序在被邪惡進程收割者無情殺死之前得到的最後一條消息。

您應該查看WWDC 2010 Session Videos,特別是會話105 - 在iPhone OS上採用多任務處理,第1部分,以獲得全面的解釋。

+0

感謝會議視頻建議!我喜歡這些視頻,我會檢查一下:) – SeniorShizzle 2010-07-14 06:20:45

相關問題