2012-10-03 65 views
14

我想在iOS 6上使用新的保存/恢復應用程序狀態功能,但(應用程序:shouldRestoreApplicationState :)方法不會被調用,如果我殺了應用程序,所以它不會恢復應用程序狀態,但如果我從調試器運行它,它會被調用。iOS 6保存/恢復應用程序狀態功能

它在我在plist中添加(應用程序不在後臺運行)時起作用,並將其設置爲YES,但我不想將其設置爲YES。我想知道是否任何人沒有設置(應用程序不在後臺運行)是否工作。

+1

您可以使用應用程序不在後臺運行僅用於測試此功能。然後回到NO,當你完成後,你會做真正的生活測試 – Daniel

+0

@丹尼爾狀態恢復將設置爲「否」,如果應用程序提交到應用程序商店,並從應用程序商店下載安裝? – artificis

回答

24

Apple docs:

系統自動在用戶退出力的應用程序刪除應用程序的保存狀態。當應用程序被殺時刪除保存的狀態信息是一種安全預防措施。 (爲了安全起見,如果應用程序在啓動期間崩潰了兩次,系統也會刪除保留狀態。)如果您想測試應用程序恢復其狀態的能力,則不應在調試期間使用多任務欄來終止應用程序。相反,使用Xcode殺死應用程序或通過安裝臨時命令或手勢來按需要調用exit來以編程方式終止應用程序。

根據經驗,最簡單的方法是通過按主頁按鈕(或模擬器的Command + Shift + H)將應用置於背景中。然後使用Xcode停止按鈕。正如文檔所暗示的,調試退出手勢也適用。

更新:

我發現周圍的小作品。該應用程序將其狀態保存在庫/已保存的應用程序狀態/ [軟件包ID] - [應用程序名稱] .savedState/data.data中。

使用模擬器時,您可以隨時複製該文件並在您想恢復到特定狀態的任何時候放下它。

同樣,在設備上,您可以從組織者生成.xcappdata存檔。然後,您可以在要從該保存的狀態進行恢復時上載.xcappdata存檔。

+3

是的,我用它將它發送到背景並停止Xcode並重新啓動它,它工作正常。但在WWDC會議中,他殺了這個應用程序,它的工作原理,這就是爲什麼我試圖通過殺死應用程序來實現它的工作原理,它通過在plist中添加(應用程序不會在後臺運行)來工作,但想知道那裏的id是任何其他方式,而讓應用程序在後臺運行。 –

+1

我注意到主持人也在殺死該應用。看來,應用程序保存行爲在測試版和發佈版之間發生了變化。這不是第一次出現這種不一致。例如,Xcode 4在早期測試版本中已經自動合成,但在公開發布之前已將其刪除。直到最近,自動合成才返回。 – rbrown

+2

與文檔的鏈接已中斷(引用的文本可能已更改)。新的URL是:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StrategiesforImplementingYourApp/StrategiesforItiplementingourour.html#//apple_ref/doc/uid/TP40007072-CH5-SW31 –