Вопрос

Как вы можете легко проверить, есть ли у вашего приложения PersistentObjects? Прямо сейчас я использую следующее:

public boolean needsFirstTimeInit() {
    PersistentObject persistentObject = getPersistentObject(Settings.TABLE_USERS);
    Vector vector = (Vector) getVector(persistentObject);
    if(vector.size()<=0){
        return true;
    }
    return false;
}

Негативным здесь я спрашиваю данные из таблицы, которую, как я знаю, должен существует, и если они существуют, я предполагаю, что таблицы не были инициализированы. Есть ли лучший способ сделать это?

Это было полезно?

Решение 3

Следующее решение сработало лучше всего:

PersistentObject рассматривается как таблица и содержит вектор (заполненный объектами).

Я сделал вектор со всеми хешкодами табличных имен. (v1) я сделал хэштебус (Hashcode TableName, PersistentObject); (H1) При каждом запуске я проверяю, имеют ли все хэшкоды в V1, имеют значение (PersistentObject) в H2. Если нет, я инициалирую PersistEntObject и ставлю его в хэштату.

Другие советы

Код, который вы показали, не совсем правильно. Есть простой пример в PersistentStore Blackberry API документы, которые показывают вам, что вам нужно сделать.

В основном вы называете GetContents () на PersistentObject, который вы ловили из магазина. Если он нулевой, нет ничего хранить, и вам нужно инициализировать его к чему -то, используя SetContents ().

Конкретный постоянный объект не связан с конкретным приложением, поэтому не имеет смысла говорить о постоянных объектах вашего приложения.

Любое приложение, которое знает гид, который вы использовали, чтобы получить свой PersistentObject может передать то же самое PersistentStore.getPersistentObject Чтобы вернуть тот же объект. Это означает, что вы используете для PersistentStore.getPersistentObject Должно быть уникальным во всех приложениях на BlackBerry (на практике трудно это гарантировать). Поэтому, если вы используете заданный GUID и получите постоянный объект с неnull Содержимое, возможно, что ваше приложение сохранило его (скорее всего, учитывая небольшую вероятность двух приложений с использованием одного и того же 64-разрядного GUID), или может случиться так, что какое-то другое приложение сохранило объект с той же GUID.

На практике большинство приложений не беспокоятся о каких -либо проверках, что они вернули ожидаемый объект для данного GUID, и это не вызывает проблем. Но это то, о чем можно знать, когда вы получаете странную ошибку из -за столкновения GUID.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top