Frage

Wie können Sie leicht überprüfen, ob Ihre App persistentObjects hat? Im Moment verwende ich Folgendes:

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

Das Negative hier ist, dass ich Daten aus einer Tabelle frage, von der ich weiß, dass sie existieren muss, und wenn es vorhanden ist, gehe ich davon aus, dass die Tabellen nicht initialisiert wurden. Gibt es eine bessere Möglichkeit, dies zu tun?

War es hilfreich?

Lösung 3

Die folgende Lösung funktionierte für mich am besten:

PersistentObject wird als Tabelle betrachtet und enthält einen Vektor (mit Objekten gefüllt).

Ich habe einen Vektor mit allen Hashcodes der Tabellen gemacht. (v1) Ich habe einen Hashtable (Hashcode tableName, PersistentObject) gemacht; (H1) Bei jedem Start -up überprüfe ich, ob alle Hashcodes in V1 in H2 einen Wert (PersistentObject) haben. Wenn nicht, habe ich das persistentObject initial und stecke es in den Hashtable.

Andere Tipps

Der Code, den Sie gezeigt haben, ist nicht ganz richtig. Es gibt ein einfaches Beispiel in der Persistentstore Blackberry -API -Dokumente, die Ihnen zeigen, was Sie tun müssen.

Grundsätzlich rufen Sie GetContents () auf dem persistentObject, das Sie aus dem Laden gefischt haben, an. Wenn es null ist, wird nichts gespeichert und Sie müssen es mit SetContents () in etwas initialisieren.

Ein bestimmtes anhaltendes Objekt ist mit einer bestimmten App nicht zugeordnet, daher ist es nicht sinnvoll, über die anhaltenden Objekte Ihrer App zu sprechen.

Jede App, die die Richtlinie kennt, die Sie verwendet haben, um Ihre zu erhalten PersistentObject kann dieselbe Guid an übergeben PersistentStore.getPersistentObject um das gleiche Objekt zurückzubekommen. Dies bedeutet GUID, für das Sie verwenden PersistentStore.getPersistentObject Sollte in allen Apps auf der Blackberry einzigartig sein (in der Praxis ist es schwierig, dies zu garantieren). Wenn Sie also einen bestimmten Richt verwenden und ein anhaltendes Objekt mit Nichts zurückerhaltennull Inhalte könnte es sein, dass Ihre App sie gespeichert hat (höchstwahrscheinlich angesichts der geringen Wahrscheinlichkeit von zwei Apps, die dieselbe 64-Bit-Richtlinie verwenden), oder es könnte sein, dass eine andere App ein Objekt mit derselben Richtlinie gespeichert hat.

In der Praxis kümmern sich die meisten Apps nicht um eine Art Überprüfung, ob sie das erwartete Objekt für eine bestimmte GUID zurückgewiesen haben, und es verursacht keine Probleme. Aber es ist etwas, das man für eine Gelegenheit bewusst ist, bei der man wegen einer Guid -Kollision einen seltsamen Fehler bekommt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top