1

Blackberry のデータ処理機能をテストするための単純な CRUD アプリケーションを作成したいと考えています。

簡単な保存機能を作成するにはどうすればよいですか?

4

1 に答える 1

5

この例では、ベクトルを永続ストアに格納しています。

店舗IDを考え出す必要があります。店舗IDはlongタイプである必要があります。私は通常、完全修飾されたアプリケーションのクラス名を、アプリケーション内で一意になる文字列に連結することによってこれを作成します。

//class Fields...
//Use the application fully qualified name so that you don't have store collisions. 
static String ApplicaitonID = Application.getApplication().getClass().getName();

static String STORE_NAME    = "myTestStore_V1";
long storeId = StringUtilities.stringHashToLong( ApplicationID + STORE_NAME );
private static PersistentObject myStoredObject; 
private static ContentProtectedVector myObjects;
//End class fields.

ストアからベクターをロードする例:

myStoredObject = PersistentStore.getPersistentObject( storeId ); 
myObjects = (ContentProtectedVector) myStoredObject.getContents();
//Print the number of objects in storeage:
System.out.println( myObjects.size() );

//Insert an element and update the store on "disk"...
myObjects.addElement( "New String" );
myStoredObject.setContents(myObjects);
myStoredObject.commit();

このストアを初期化して初めてディスクに保存する例:

myStoredObject = PersistentStore.getPersistentObject( storeId ); 
myObjects = (ContentProtectedVector) myStoredObject.getContents();
if(myObjects == null)
    myObjects = new ContentProtectedVector(); 
myStoredObject.setContents(myObjects);
myStoredObject.commit();

変更をコミットする(つまり、変更をディスクに保存する)場合は、下の2行を繰り返す必要があります。setContents(OBJ); およびCommit()。

特別なことをしなくても、次のものを保存できます。

java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Integer
java.lang.Long
java.lang.Object
java.lang.Short
java.lang.String
java.util.Vector
java.util.Hashtable

@see:http ://docs.blackberry.com/en/developers/deliverables/17952/Storing_objects_persistently_1219782_11.jsp

独自のクラスを格納するには、それら(およびすべてのサブクラス)が「永続的」インターフェースを実装する必要があります。これらのストアは、アプリケーションがアンインストールされると自動的にクリーンアップされるため、これを行うことをお勧めします。これは、ストア内の「任意の」参照クラス名にアプリケーションが関連付けられていない場合に、OSがストアされたオブジェクトをクリーンアップするためです。したがって、ストアで文字列のみを使用している場合、クリーンアップされることはありません。

于 2010-09-27T23:42:07.600 に答える