2012-07-27 146 views
0

當我重新啓動設備時,我的應用程序在其上將不會保留它一旦我再次打開應用程序時的狀態,它將會像我第一次打開時一樣,失去了會話,不得不重新登錄,我怎麼能讓我的應用程序保持其狀態,即使通過設備重啓?例如,像Twitter一樣。防止應用程序在設備重新啓動時關閉

+4

每次應用程序進入後臺狀態時,您是否保存應用程序狀態?如果是這樣,您可以使用保存的信息來恢復用戶在應用重新啓動時正在處理的內容。如果設備重新啓動或應用程序由操作系統終止,則無關緊要。 – 2012-07-27 15:55:10

+0

我相信當它進入後臺時我並沒有保存應用程序狀態,但是如果我退出應用程序,它不會丟失它的當前狀態,它會從它停止的地方接收它,但是當設備重新啓動時,它不會不會發生。 – 8vius 2012-07-27 15:57:24

+2

@ 8vius:我想你可能會誤解一些應用程序和多任務處理在最新版本的iOS上的工作原理。考慮查看iOS應用程序編程指南的[應用程序狀態和多任務處理](http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOS編程指南/管理應用程序流量/管理應用程序流量.html)部分。 – Tim 2012-07-27 16:03:19

回答

3

根據您在上面添加的評論,我會嘗試更正式的答案。我會開始說蒂姆發佈的the link是你應該熟悉的東西。

當您的應用運行時,它處於前臺狀態。當你用主頁按鈕「退出」一個應用程序時,你並不是真的放棄它;你只是把它推到背景狀態。在後臺狀態幾秒鐘後,操作系統會自動將應用程序移至掛起狀態。如果你在幾分鐘內回來,你的應用程序仍然在內存中,所以操作系統只是將它放回到屏幕上。

但是,如果您將應用程序單獨保留一段時間並使用其他應用程序,操作系統可以隨時在沒有警告的情況下從內存中清除您的應用程序。這被稱爲「未運行」狀態。現在,當再次打開應用程序時,它必須從頭開始。顯然,當設備重新啓動時會發生同樣的事情 - 所有的應用程序都從內存中清除。

然後,訣竅就是在進入後臺狀態時保存有關應用程序狀態的基本信息。您可以使用應用程序代理的didEnterBackground方法,或註冊UIApplicationDidEnterBackgroundNotification,並在您的活動視圖控制器(或任何其他類)中調用方法。無論哪種方式,你應該保存任何你可以的狀態信息。

如何保存這些信息?有幾種策略。對於一個簡單的應用程序,也許你可以註冊一些設置爲NSUserDefaults。或者,也許你可以寫出一個包含用戶正在處理的任何數據的文件。這真的取決於你。

然後,無論何時啓動應用程序,檢查是否存在保存的數據(但是您選擇將其寫出),並相應地設置UI。對於用戶來說,它看起來好像該應用永不退出,這正是蘋果希望他們想的。

+0

感謝Husker的解釋,我當時只是信任蘋果的魔力。 – 8vius 2012-07-27 19:39:34

相關問題