2012-05-12 40 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作为所有数据的容器。

相关问题