我正在开发一款BlackBerry App并将大量值String
和boolean
保存到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,以便在卸载/删除应用程序时将其删除。如果我错过任何事情,请提供帮助和评论。
答案 0 :(得分:2)
我再次建议您将PersistentStoreHelper
更改为this version online。
卸载应用时,您肯定可以从持久性存储中删除Boolean
和String
值,但是他们需要内部一个只能来的对象存在于您的应用中。
例如:
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} })。您需要将MyAppsHashtable
或String
个对象存储在该应用唯一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()
如果您遇到需要清理的旧持久数据,可以修改 boolean containsFlagged = (store.get("flagged") != null);
以检测并纠正这种情况,如下所示(对@adwiv提出建议):
PersistentStoreHelper