2010-09-27 2 views

ответ

5

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

Вы должны придумать идентификатор магазина, который должен иметь тип 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. 

Пример загрузки Vector из магазина:

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(); 

Если вы хотите совершить изменения (ака save изменения на диске), вам нужно повторить две нижние строки. 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

Чтобы сохранить свои собственные классы, они (и все суб-классы) должны осуществлять «Persistable "интерфейс. Я рекомендую вам это сделать, поскольку эти хранилища автоматически очищаются при удалении приложения. Это связано с тем, что ОС очищает сохраненные объекты вверх, когда «любое» ссылочное имя класса в хранилище больше не имеет связанного с ним приложения. Поэтому, если ваш магазин использует только строки, он никогда не будет очищен.

Смежные вопросы