1

アプリにpersistentObjectsがあるかどうかを簡単に確認するにはどうすればよいですか?現在、私は以下を使用しています:

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()を呼び出します。nullの場合、何も保存されないため、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同じオブジェクトを取得できます。つまり、使用するGUIDはPersistentStore.getPersistentObject、BlackBerry上のすべてのアプリで一意である必要があります(実際には、これを保証することは困難です)。したがって、特定のGUIDを使用して、nullコンテンツ以外の永続オブジェクトを取得する場合は、アプリがそれを保存している可能性があります(2つのアプリが同じ64ビットGUIDを使用している可能性が低い場合)。他のアプリが同じGUIDでオブジェクトを保存したこと。

実際には、ほとんどのアプリは、特定のGUIDに対して期待されるオブジェクトを取得したことを確認する必要はなく、問題は発生しません。ただし、GUIDの衝突が原因で奇妙なバグが発生する場合は、注意が必要です。

于 2011-02-01T15:47:48.543 に答える