在Android中,您需要實現以下活性的方法使你的應用程序可以恢復到以前的狀態,如果操作系統決定摧毀然後重新創建活動:穩健+簡單的方法來保存/恢復Android應用程序實例狀態
public void onSaveInstanceState(Bundle savedInstanceState)
public void onRestoreInstanceState(Bundle savedInstanceState)
我見過的實現這些方法的例子是在Bundle對象上使用put/getBoolean,put/getInt等來保存應用程序狀態。這似乎是一個非常容易出錯的方式來保存你的狀態,我看不出如何在不編寫大量代碼的情況下擴展存儲複雜對象。
我有什麼選擇來以強大且易於實現的方式存儲/恢復狀態?如果它很重要,我的應用程序(遊戲)需要存儲大約50個對象,每個對象可以存儲5個浮點變量和一些商店對其他對象的引用。我並不特別想爲每個類和子類(也許大約15個)編寫保存/恢復方法。如果我可以將所有狀態相關的對象粘在一個名爲「state」的對象中,然後在「state」上調用save/load來處理所有事情,那將是理想的。
正在使用Java序列化選項嗎?我聽說它很慢,但是這是保存/恢復的問題嗎?我能否將我的數據寫入SD卡?到數據庫?
Doh,謝謝:Bundle有一個「putSerializable」方法。有沒有一個普遍認同的最好的方式來存儲對象,雖然這個目的?例如,我已經看到人們將他們的對象轉換爲JSON字符串,然後將該字符串作爲一個包存儲/加載。序列化真的和人們一樣糟糕嗎?是什麼讓它比平時慢得多(如果這是真的)? – BobbyJim 2010-02-19 19:32:18
我認爲轉換爲JSON只會浪費計算週期。 – 2010-02-20 06:01:51