Blackberry app version update会删除某些设备上的持久存储对象

时间:2013-03-13 00:28:49

标签: blackberry persistent-storage

我有一个Blackberry应用程序,它将对象存储在持久性存储中。更新应用程序后,应该从持久性存储中读取现有值(如果有),并继续使用该值。这适用于某些设备,但不适用于其他设备。我在几个运行OS版本7的设备上进行了测试,所有设备都按预期工作。但是,在使用版本5的设备和使用版本6的另一台设备上,该对象在持久性存储中不再可读。

即使我不对版本号以外的应用程序进行任何更改,也会出现这种情况。保存相同的确切类/对象&从持久性存储加载,以及用于访问它的相同对象ID。

我正在遵循的重现过程是:

  1. 完全删除该应用&使用命令行完成所有数据。
  2. 通过从浏览器下载.jad文件加载应用程序版本,验证它是否将数据存储在持久存储中。
  3. 当应用程序在后台运行时,通过浏览器下载.jad文件加载更高版本。
  4. 下载更高版本后,系统会询问我是否要更换以前的版本,并确认我这样做。
  5. 系统加载新版本,并提示我必须重新启动才能使更改生效。我选择“重启”。
  6. 设备重新启动。更高版本正在运行,但无法从持久存储中读取对象。
  7. 我可以持续重现此问题的设备是运行6.0 Bundle 2647的Blackberry 9800(Torch)。

    如上所述,这只发生在某些设备上,而不是所有设备上,这让我觉得除了编码错误之外的其他内容可能会在这里发生。

    任何人都有关于此问题或如何进一步调试的想法?

1 个答案:

答案 0 :(得分:0)

特殊情况。

您确定要提交持久存储吗?当数据存储在存储器中但未提交时,通常会发生类似的情况。如果是这种情况,并且您加载旧版本,存储一些数据并重新启动设备,则数据将不会以持久性存储。

您提到在加载更高版本时该应用仍在后台运行。您可能想要检查commit()是否被执行。