Постоянное хранилище на Java - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь создать постоянную и общую переменную, которая будет отслеживать количество уведомлений, доступных пользователю в приложении Blackberry.Этот номер отображается на главном экране и должен сохраняться даже после выключения устройства, пока они сами не проверит приложение, а затем номер сбрасывается.Я использовал singleton для разделения переменной между фоновым процессом и самим приложением пользовательского интерфейса ниже:

import net.rim.device.api.system.RuntimeStore;

public class IconManager {
    private static IconManager _instance;
    private static final long GUID = 0xab4dd61c5d004c18L;
    private int iconCount;

    // constructor
    private IconManager() {
        iconCount = 0;
    }

    public static IconManager getInstance() {
        if (_instance == null) {
            _instance = (IconManager) RuntimeStore.getRuntimeStore().get(GUID);
            if (_instance == null) {
                IconManager singleton = new IconManager();

                RuntimeStore.getRuntimeStore().put(GUID, singleton); 
                _instance = singleton;
            }
        }
        return _instance;
    }

    public int getCount() {             
        return iconCount;
    }

    public void setCount(int count) {      
        iconCount = count;
    }
}

В основном я использовал этот сайт, чтобы выяснить часть постоянного хранилища: http://supportforums.blackberry.com/t5/Java-Development/Storing-persistent-data/ta-p/442747

Есть ли альтернатива для реализации постоянного хранилища с учетом вышеуказанного временного хранилища?Первоначально я думал об использовании кода из примера Blackberry, но я не уверен, как это сделать.Из другого потока пользователь mparizeau написал следующее:

persistentCount = PersistentStore.getPersistentObject(0xdec6a67096f833cL); 
synchronized (persistentCount) { 
    if (persistentCount.getContents() == null) { 
        persistentCount.setContents(new StoreInfo());
        persistentCount.commit(); 
    } 
}  
_data = (StoreInfo)persistentCount.getContents();

Теперь, когда вы хотите обновить его и сохранить в PersistentStore, вы можете получить что-то вроде:

_data.incElement();
synchronized(persistentCount) {
    persistentCount.setContents(_data);
    persistentCount.commit();
}

Можно ли это как-то использовать в приведенном выше коде?Я чрезвычайно новичок в разработке Java и BB, поэтому любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 10 февраля 2012

Не думаю, что вы хотите использовать RunTimeStore, поскольку вы хотите, чтобы информация сохранялась даже после выключения устройства.С этой страницы

Хранилище времени выполнения не является постоянным.При перезапуске устройства BlackBerry данные в хранилище времени выполнения очищаются.

Попробуйте что-то вроде этого:

0 голосов
/ 11 февраля 2012

В Blackberry OS 5 и новее встроен SQLite. Вы можете использовать его вместо постоянного хранилища. (У этого есть jdbc-подобный API). BBOS 5 уже давно отсутствует.

...