Как использовать хранилище постоянных объектов в Blackberry?
Я хочу создать простое приложение CRUD, чтобы проверить возможности обработки данных Blackberry.
Как мне создать простую функцию сохранения?
1 ответ
В этом примере я храню вектор в постоянном хранилище.
Вы должны придумать идентификатор магазина, который должен иметь тип 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); и совершить ().
Вы можете хранить следующее, не делая ничего особенного:
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
Чтобы хранить ваши собственные классы, они (и все подклассы) должны реализовывать интерфейс "Persistable". Я рекомендую вам сделать это, так как эти магазины очищаются автоматически при удалении вашего приложения. Это связано с тем, что ОС очищает сохраненные объекты, когда "любое" имя класса, на которое ссылаются в хранилище, больше не имеет приложения, связанного с ним. Так что, если ваш магазин использует только строки, он никогда не будет очищен.