2011-10-07 124 views
1

我正在開發iPhone遊戲應用程序。我不想使用核心數據或nsuserdefaults來存儲用戶數據。相反,我想保留內存中的所有活動,然後將其發送到服務器,當用戶返回到前一個屏幕,結束遊戲或按下iphone的主頁按鈕。現在一切正常,但我無法在用戶按Home鍵時同步用戶數據。我已經在我的委託類中實現了appilcationWillTerminate方法,但它不適合我,因爲當我按下iphone的home按鈕時,方法不會被調用。任何人都可以請告訴我如何實現這個任務?如何在應用程序退出時保存應用程序狀態

問候

+0

您是否嘗試過applicationDidEnterBackground:? – ender

回答

4

什麼關於這個方法:

告訴應用程序現在在後臺委託。

- (void)applicationDidEnterBackground:(UIApplication *)application 

從蘋果文檔:

在iOS中4.0和更高,這種方法被調用,而不是applicationWillTerminate:當用戶退出支持背景執行的應用方法。您應該使用此方法釋放共享資源,保存用戶數據,使計時器無效並存儲足夠的應用程序狀態信息,以便將應用程序恢復到其當前狀態,以防稍後終止。您還應該禁用應用程序用戶界面的更新,並避免使用某些類型的共享系統資源(例如用戶的聯繫人數據庫)。避免在後臺使用OpenGL ES也是必要的。

此方法的實現大約需要五秒鐘來執行任何任務並返回。如果您需要更多時間來執行任何最終任務,則可以通過調用beginBackgroundTaskWithExpirationHandler:來從系統請求額外的執行時間。實際上,您應該儘快從applicationDidEnterBackground返回。如果該方法在時間耗盡之前未返回,則應用程序終止並從內存中清除。

+0

謝謝Nekto,你是對的:-) – Aqueel

+0

不客氣。不要忘記接受=) – Nekto

0

您應該使用NSUserDefaults來存儲有關應用程序狀態的數據。然後,當應用程序重新啓動時,您可以從NSUserDefaults加載數據以重新創建以前的狀態。然而,隨着新的多任務處理,這不像過去幾年前那樣必要。

相關問題