В этом примере я сохраняю вектор в постоянном хранилище.
Вы должны придумать идентификатор магазина, который должен иметь тип 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();
Если вы хотите зафиксировать изменения (или сохранить изменения на диске), вам нужно повторить две нижние строки. 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
@ см .: http://docs.blackberry.com/en/developers/deliverables/17952/Storing_objects_persistently_1219782_11.jsp
Чтобы хранить ваши собственные классы, они (и все подклассы) должны реализовывать интерфейс "Persistable". Я рекомендую вам сделать это, так как эти магазины очищаются автоматически при удалении вашего приложения. Это связано с тем, что ОС очищает хранимые объекты, когда «любое» имя класса, на которое ссылаются в хранилище, больше не имеет приложения, связанного с ним. Так что, если ваш магазин использует только строки, он никогда не будет очищен.