持久存储将布尔值保存为对象

时间:2013-04-09 07:59:03

标签: object blackberry persistent persistent-storage

我正在开发一款BlackBerry App并将大量值Stringboolean保存到Persistent Store。我知道当从手机中删除/卸载应用程序时,不会从持久性中删除字符串和布尔值。我也知道为了删除这些值,我需要将它存储在“项目”特定的类中。我一直在努力,因此希望临时解决。我正在保存一个布尔值,以确定应该加载它的哪个屏幕。

PersistentStoreHelper.persistentHashtable.put("flagged",Boolean.TRUE); 

if (PersistentStoreHelper.persistentHashtable.containsKey("flagged")) 
        {
           boolean booleanVal = ((Boolean) PersistentStoreHelper.persistentHashtable.get("flagged")).booleanValue();
           if (booleanVal==true)
           {
              pushScreen(new MyScreen());
           }
        }
        else
        {
            pushScreen(new MyScreen(false));
        }

是否可以将此布尔值存储为Object,以便在卸载/删除应用程序时将其删除。如果我错过任何事情,请提供帮助和评论。

1 个答案:

答案 0 :(得分:2)

我再次建议您将PersistentStoreHelper更改为this version online

卸载应用时,您肯定可以从持久性存储中删除BooleanString值,但是他们需要内部一个只能来的对象存在于您的应用中。

例如:

 PersistentStoreHelper store = PersistentStoreHelper.getInstance();
 store.put("flagged", Boolean.TRUE);
 // commit will save changes to the `flagged` variable
 store.commit();

然后使用以下命令检索它:

 PersistentStoreHelper store = PersistentStoreHelper.getInstance();
 boolean isFlagged = ((Boolean)store.get("flagged")).booleanValue();

使这项工作的关键在我的PersistentStoreHelper课程中,它将所有内容保存在Hashtable子类中,这是我/您的应用所独有的({{1} })。您需要将MyAppsHashtableString个对象存储在该应用唯一Boolean子类中,存储在正常Hashtable中。

再次,请自己轻松一点,并使用我发布的代码。

注意:,您可能也知道这一点,但您可能需要重新启动设备才能看到该应用及其持久存储数据已完全删除。

更新

如果您更改了I had posted online的原始java.util.Hashtable课程,因为您希望访问PersistentStoreHelper方法或containsKey()课程中的其他方法,则可以解决通过简单地添加这样的代码来解决这个问题:

Hashtable

public boolean containsKey(String key) { return persistentHashtable.containsKey(key); } 课程。 请不要使PeristentStoreHelper成为persistentHashtable成员。由于您需要使用更多public static方法,只需为它们添加包装,就像我在上面显示Hashtable一样。当然,只需使用以下代码即可实现与containsKey()相同的功能:

containsKey()

更新2

如果您遇到需要清理的旧持久数据,可以修改 boolean containsFlagged = (store.get("flagged") != null); 以检测并纠正这种情况,如下所示(对@adwiv提出建议):

PersistentStoreHelper