我想知道PersistentObject\PersistentStore
更新应用程序版本后存储的数据是否仍然存在。
我的用例:
1) 发布 0.1 版本的应用程序。用户将数据保存到 PersistentObject\PersistentStore
2) 发布 0.2 版本的应用程序。
在 0.1 版本中保存到 PersistentStore\PersistentObject 中的数据是否可用于 0.2 版本的应用程序?
我想知道PersistentObject\PersistentStore
更新应用程序版本后存储的数据是否仍然存在。
我的用例:
1) 发布 0.1 版本的应用程序。用户将数据保存到 PersistentObject\PersistentStore
2) 发布 0.2 版本的应用程序。
在 0.1 版本中保存到 PersistentStore\PersistentObject 中的数据是否可用于 0.2 版本的应用程序?
是的,只要持久化的类没有任何结构变化,它就仍然可用。这意味着如果您希望保留持久数据,则不能在版本之间添加或删除字段。
我发现确保在更新应用程序时顺利运行的最佳方法是将所有持久数据存储在哈希表中。每条数据将由一个字符串key存储。您通过该字符串键检索值。新版本的应用程序能够添加新的持久数据,只需添加对象,使用新的字符串键。
正如迈克尔警告说的那样,这使您可以在未来获得一些灵活性,同时不会对持久类的基本格式进行更改时遇到问题。您的数据将始终在一个持久化的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
作为所有数据的容器。