2012-05-12 37 views
2

我想知道在更新應用程序版本後是否保留存儲在PersistentObject\PersistentStore中的數據。從AppWorld更新應用程序後,PersistentStore PersistentObject數據是否保留

我的使用案例:

1)使用版本0.1發佈應用程序。用戶將數據保存到PersistentObject \ PersistentStore

2)發佈0.2版本的應用程序。

版本0.1中保存到PersistentStore \ PersistentObject的數據是否可用於版本爲0.2的應用程序?

回答

2

是的,只要持久化的類沒有任何結構變化,它仍然可用。這意味着如果您想要保留持久數據,則不能在版本之間添加或刪除字段。

+0

感謝您的回覆。我想總結一下獲得的知識:如果在升級應用程序版本的過程中將數據保存爲PersistentStore,數據將被清除。但是,如果我將Object序列化爲String並將對象保存爲PersistentStore中的字符串,則不會清除此字符串,並且應用程序的更新版本將能夠讀取和解析數據。該解決方案有一個缺點:如果應用程序正在卸載,PersistentStore中的數據將留在設備上,在卸載過程中數據不會被清除。也不是很好。 – Nazar

+0

如果我要更改App的所有文件,會發生什麼情況? 將持續存在或將清除該應用程序? – AnkitRox

1

更新應用程序時,我發現的最好的方法是確保它能夠順暢地工作,將所有持久數據存儲在散列表中。每條數據將通過一個字符串存儲。您通過該字符串鍵檢索值。新版本的應用程序可以添加新的持久性數據,只需添加對象和新的字符串鍵。

這可以讓你有一些未來的靈活性,同時不會對持久性類的基本格式發生變化as Michael warned about。您的數據將始終爲處於持續Hashtable

如果你想確保持久性數據被刪除時,您的應用程序被刪除,然後使用一個哈希表容器的獨特應用程式的

package com.mycompany.myapp; 

import net.rim.device.api.util.Persistable; 
import java.util.Hashtable; 

public class Preferences extends Hashtable implements Persistable { 

這個Preferences類的實例,例如,你會傳遞給PersistentObject#setContents()

如果你不要想要刪除持久性數據,那麼只需使用標準的java.util.Hashtable作爲所有數據的容器。

相關問題