1

如何轻松检查您的应用程序是否具有持久对象?现在我正在使用以下内容:

public boolean needsFirstTimeInit() {
    PersistentObject persistentObject = getPersistentObject(Settings.TABLE_USERS);
    Vector vector = (Vector) getVector(persistentObject);
    if(vector.size()<=0){
        return true;
    }
    return false;
}

这里的负面因素是我从一个我知道必须存在的表中询问数据,如果它存在,我假设这些表尚未初始化。有没有更好的方法来做到这一点?

4

3 回答 3

1

您显示的代码不太正确。PersistentStore BlackBerry API 文档中有一个简单的示例,它向您展示了您需要做什么。

基本上,您在从商店中捞出的 PersistentObject 上调用 getContents()。如果它为空,则没有存储任何内容,您需要使用 setContents() 将其初始化为某些内容。

于 2011-01-31T17:02:14.910 回答
0

以下解决方案最适合我:

PersistentObject 被视为一个表格,包含一个 Vector(填充有对象)。

我用 tableNames 的所有哈希码制作了一个向量。(v1)我做了一个哈希表(哈希码表名,PersistentObject);(h1) 每次启动时,我都会检查 v1 中的所有哈希码是否在 h2 中都有值(persistentObject)。如果没有,我初始化persistentObject 并将其放入哈希表中。

于 2011-03-29T07:15:04.197 回答
0

特定的持久对象与特定的应用程序没有关联,因此谈论应用程序的持久对象是没有意义的。

任何知道您用来获取 GUID 的应用程序都PersistentObject可以将相同的 GUID 传递给以PersistentStore.getPersistentObject获取相同的对象。这意味着您使用的 GUIDPersistentStore.getPersistentObject在 BlackBerry 上的所有应用程序中应该是唯一的(实际上很难保证这一点)。因此,如果您使用给定的 GUID 并取回具有非null内容的持久对象,则可能是您的应用程序已保存它(很可能,考虑到两个应用程序使用相同的 64 位 GUID 的可能性很小),或者它可能是其他一些应用程序已保存具有相同 GUID 的对象。

在实践中,大多数应用程序不会费心检查它们是否返回了给定 GUID 的预期对象,并且不会导致问题。但是对于由于 GUID 冲突而出现奇怪错误的情况,这是需要注意的。

于 2011-02-01T15:47:48.543 回答