Как использовать хранилище постоянных объектов в Blackberry? - PullRequest
1 голос
/ 27 сентября 2010

Я хочу создать простое приложение CRUD для проверки возможностей обработки данных Blackberry.

Как создать простую функцию сохранения?

1 Ответ

5 голосов
/ 28 сентября 2010

В этом примере я сохраняю вектор в постоянном хранилище.

Вы должны придумать идентификатор магазина, который должен иметь тип 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". Я рекомендую вам сделать это, так как эти магазины очищаются автоматически при удалении вашего приложения. Это связано с тем, что ОС очищает хранимые объекты, когда «любое» имя класса, на которое ссылаются в хранилище, больше не имеет приложения, связанного с ним. Так что, если ваш магазин использует только строки, он никогда не будет очищен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...