2013-10-21 102 views
1

我在iOS 5中測試應用程序狀態的保存時出現問題:退出應用程序時,將不會調用保存狀態的重載。在模擬器中測試應用程序狀態的保存

這是我如何重載節能狀態的方法:

[Register("AppDelegate")] 
public class AppDelegate : UIApplicationDelegate 
{ 
    ...    
    public override bool ShouldSaveApplicationState(UIApplication application, NSCoder coder) 
    { 
     Data.Save(coder); 
     return true; 
    } 

    public override void WillEncodeRestorableState(UIApplication application, NSCoder coder) 
    { 
     Data.Save(coder); 
    } 

這裏是我用於退出應用程序的方法,據我的理解是,它們中的每一個應該觸發狀態保存通話(但他們不):

  • 按home鍵
  • 調用UIApplication.SharedApplication.PerformSelector(new Selector("terminateWithSuccess"), null, 0f);
  • 調用Environment.Exit(0);(這將導致應用程序掛起)在模擬器
  • 設置UIApplicationExitsOnSuspend爲true Info.plist並按下home鍵

所以我的問題是:爲什麼是節能狀態的方法,不叫?

回答

3

你在這裏指回到您使用的是iOS 5

蘋果iOS中6.加入狀態保存早期版本的iOS不會叫你重寫狀態forums問題。

1

從Apple文檔:

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

請嘗試按主頁按鈕。

+0

感謝您的回覆。對不起,我忘了提及我只是按了主頁按鈕。我閱讀了文檔,它並沒有明確提及如何「通過按需求調用exit來以編程方式殺死應用程序」。我試過調用'Environment.Exit(0)'這個錯誤?什麼是正確的電話? – thumbmunkeys