Domanda

Come puoi verificare facilmente se la tua app ha persistentObjects?In questo momento sto usando quanto segue:

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

L'aspetto negativo qui è che sto chiedendo dati da una tabella che so che deve esistere e, se esiste, presumo che le tabelle non siano state inizializzate.Esiste un modo migliore per farlo?

È stato utile?

Soluzione 3

La seguente soluzione ha funzionato meglio per me:

PersistoBject è considerato come una tabella e contiene un vettore (pieno di oggetti).

Ho creato un vettore con tutti gli hashcodi dei tablenames. (v1) ho creato un hashtable (tablename hashcode, persistobject); (H1) In ogni startup che controllo se tutti gli hashcodi in V1 hanno un valore (PersistentObject) in H2. In caso contrario, inizialisco il persistente oggetto e lo metto nell'hashtable.

Altri suggerimenti

Il codice che hai mostrato non è del tutto giusto. C'è un semplice esempio in Persistenza Documenti API BlackBerry che ti mostrano quello che devi fare.

Fondamentalmente chiami getContents () sugli oggetti persistenti che hai pescato dal negozio. Se è nullo, non c'è nulla archiviato e devi inizializzarlo in qualcosa usando setContents ().

Uno specifico oggetto persistente non è associato a un'app specifica, quindi non ha senso parlare degli oggetti persistenti della tua app.

Qualsiasi app che conosca il GUID che hai utilizzato per ottenere il tuo file PersistentObject può passare lo stesso GUID a PersistentStore.getPersistentObject per riavere lo stesso oggetto.Ciò significa il GUID per cui utilizzi PersistentStore.getPersistentObject dovrebbe essere unico per tutte le app del BlackBerry (in pratica è difficile garantirlo).Quindi, se usi un determinato GUID e ottieni un oggetto persistente con non-null contenuto, potrebbe essere che la tua app lo abbia salvato (molto probabilmente, data la scarsa probabilità che due app utilizzino lo stesso GUID a 64 bit) o ​​potrebbe essere che qualche altra app abbia salvato un oggetto con lo stesso GUID.

In pratica, la maggior parte delle app non si preoccupa di alcun tipo di controllo per verificare che abbiano restituito l'oggetto previsto per un determinato GUID e ciò non causa problemi.Ma è qualcosa di cui essere consapevoli per quell'occasione in cui si verifica uno strano bug a causa di una collisione del GUID.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top