回答
在iOS 4.x的更好的選擇是applicationDidEnterBackground:
事實上,根據蘋果文檔,在後臺的應用程序可以在任何時間終止內存不足的條件。因此,建議在應用程序進入後臺時持續保存任何狀態信息。
從UIApplicationDelegate protocol的摘錄:
您應該使用這個方法來釋放共享資源,保存用戶數據,無效定時器和儲存足夠的應用程序狀態信息到您的應用程序恢復到其當前狀態的情況下,稍後終止。您還應該禁用應用程序用戶界面的更新,並避免使用某些類型的共享系統資源(例如用戶的聯繫人數據庫)。避免在後臺使用OpenGL ES也是必要的。
此方法的實現大約需要五秒鐘來執行任何任務並返回。如果你需要更多的時間......
另外:
對於不支持後臺執行或者是針對iOS的3.x的鏈接或更早版本的應用程序,這種方法始終是當用戶退出應用程序時調用。對於支持後臺執行的應用程序,當用戶退出應用程序時通常不會調用此方法,因爲在這種情況下應用程序只是移至後臺。但是,在應用程序在後臺運行(未掛起)並且系統因某種原因需要終止應用程序的情況下,可能會調用此方法。
因此,如果您特別要求不支持backgrounding爲您的應用程序,或者你對的iOS 3.x的你應該考慮在兩地(applicationWillTerminate和applicationWillEnterBackground)堅持抓情況,以及鏈接。
多數民衆贊成真棒,謝謝!一個更快的問題(只是不想開始一個新的線程) - 我想轉儲到我的視圖控制器中的數組,但它不是全局的文件。我如何將它傳遞給應用程序委託?我在這裏讀了一些關於傳遞物體的地方,但沒有一個類似於這種情況。謝謝! – TommyG
爲什麼你需要將它傳遞給你的應用程序委託?這聽起來像你可能從重構代碼中受益,並可能創建一個處理數據持久性的類。如果你真的想使用你的應用程序委託(我會避免),你可以通過'[[UIApplication sharedApplication]委託]獲得對它的引用,然後調用你的持久性方法並傳入你的數組? –
我更喜歡避免使用應用程序委託,但最終,我將需要,因爲只有在應用程序委託我可以知道應用程序何時終止,不是嗎?你認爲創建一個處理所有數據存儲的類更好,但是,那麼我何時將它轉儲到文件?謝謝!! – TommyG
- 1. 獨立存儲不存儲數據時,應用程序退出
- 2. 當用戶退出應用程序時保存核心數據?
- 3. 當我退出應用程序時,.mdf文件中丟失的數據
- 4. 退出應用程序時,當按下
- 5. 當應用程序意外退出時防止數據損壞
- 6. 在應用退出時轉儲NSUserDefaults?
- 7. 當按下後退按鈕時退出應用程序
- 8. 如何將JSON數據轉儲到Flask應用程序路線?
- 9. 將數據導出到asp.net應用程序中的excel文件
- 10. 當應用程序退出時保存整數 - 蘋果iOS
- 11. iPhone:當應用程序退出
- 12. NSAlertPanel當應用程序正在退出
- 13. 當應用程序轉到背景時Android清除數據
- 14. 將quandl數據轉儲到文件
- 15. 將C#數據錶轉儲到文件
- 16. 程序退出後轉儲的核心
- 17. 當用戶使用退出按鈕退出時保存應用程序
- 18. 用戶退出應用程序時的數據持久性
- 19. 將表單數據轉換爲通用應用程序中的存儲文件
- 20. 當應用程序退出時顯示遠程通知的uiviewcontroller
- 21. 當應用程序退出時停止執行進程
- 22. 當WPF應用程序關閉時自動退出線程
- 23. 當用戶在C++控制檯應用程序中輸入「退出」時,如何退出應用程序?
- 24. 當用戶點擊退出時(退出應用程序之前)顯示「評價我的應用程序」警報
- 25. 遠程通知(GCM)到Xamarin.Android(MonoDroid的),當應用程序退出
- 26. 退出時保存應用程序數據狀態
- 27. 如何在應用程序退出時清除SQLite數據庫?
- 28. ios:將數據文件同步到應用程序文件夾
- 29. 應用程序退出進程退出事件
- 30. 當應用程序退出時使用對象更新webservice
如果可以,隨時保存總是更好 - 因爲sergio上面提到的只有5秒鐘來執行applicationDidEnterBackground中的任何任務。 – amergin