Постоянный магазин Blackberry — данные не сохраняются после перезагрузки портативного устройства

Я пытаюсь написать приложение для ежевики и использую постоянное хранилище, но когда я перезагружаю устройство, данные теряются. Кто-нибудь знает, почему это происходит?
Заранее всем спасибо!

    public static void add(Subscription s) throws IOException {
        Vector subscriptions = SubscriptionsController.getSubscriptions();
        if(subscriptions == null) subscriptions = new Vector();
        subscriptions.addElement(s);
        synchronized(SubscriptionsController.persistedSubscriptions) {
            SubscriptionsController.persistedSubscriptions.setContents(subscriptions);
            SubscriptionsController.persistedSubscriptions.commit();
        }
    }


person Olsi    schedule 18.04.2011    source источник
comment
пожалуйста, опубликуйте код, который вы используете   -  person seand    schedule 18.04.2011
comment
@seand, код, который я разместил выше, выполняет фактическое сохранение.   -  person Olsi    schedule 18.04.2011


Ответы (2)


Я предполагаю (всегда плохая идея, лол), что у вас есть подкласс PersistentStore/PersistentObject (поскольку вы можете совершить() и т. д.)? Вы реализовали Persistable (он не наследуется подклассами)?

person Dan    schedule 18.04.2011
comment
Привет Дэн. Это была именно моя проблема. Я сохранял вектор объектов Subscriptions, которые не реализовывали интерфейс Persistable. Теперь работает :) - person Olsi; 19.04.2011
comment
Люблю этот CrackBerry :) Рад, что смог помочь! - person Dan; 19.04.2011

Насколько мне известно, SubscriptionsController не является классом Blackberry. Похоже, ваше неожиданное поведение связано с реализацией этого класса.

Если вы хотите сохранить состояние объекта при перезагрузке устройства, вам необходимо использовать PersistentStore. API, который сериализует объекты в файл на Blackberry. Этот документ на сайте RIM объясняет использование PersistentStore

person AndyT    schedule 18.04.2011
comment
SubscriptionsController — это созданный мной класс, в котором persistedSubscriptions объявлен как статическая переменная. Данные сохраняются в первый раз (вектор объектов Subscription), но при перезапуске они удаляются. - person Olsi; 18.04.2011
comment
Статические переменные не сохраняются при перезагрузке Blackberry. Если вы хотите сохранить объекты, вам понадобится API-интерфейс PersistentStore. Я отредактировал свой ответ, чтобы сказать это. - person AndyT; 18.04.2011