2017-04-04 3 views
0

Diese Frage ist die Fortsetzung meiner vorherigen: Is it safe to use ActiveRecord pattern with Realm?Ist es sicher, statische Getters mit Realm zu verwenden?

Ist es sicher, bequeme statische Getter wie diese zu verwenden?

public static List<ItemRealm> getListByBar(String bar){ 
    Realm realm = Realm.getDefaultInstance(); 
    RealmResults<ItemRealm> rtn = realm.where(ItemRealm.class).equalTo("foo", bar).findAll(); 
    //realm.close(); 
    return rtn; 
} 

Durch die Kommentare zu meiner vorherigen Post, es scheint, dass ich das Reich schließen soll, aber wenn ich meinen Einzelteil tue, ist nicht mehr verwendbar.

Dafür ist eine Anfrage, die ich sehr oft in meinem Code, ich möchte eine delegierte Methode haben.

Was ist der empfohlene Weg?

Antwort

0

Es ist nur sicher, wenn Ihr Realm-Lebenszyklus außerhalb dieser Methode verwaltet wird.

public static List<ItemRealm> getListByBar(Realm realm, String bar) { 
    //Realm realm = Realm.getDefaultInstance(); 
    return realm.where(ItemRealm.class).equalTo("foo", bar).findAll(); 
    //realm.close(); 
} 

Obwohl ich frage mich, wie Sie beabsichtigen, es synchronisiert zu halten, wenn Sie es als List<> aussetzen und daher eine RealmChangeListener nicht hinzufügen können.

+0

Für diesen Zweck brauche ich RealmChangeListeners nicht wirklich. Aber ist es nicht ein Problem für jeden 'findAll()' verwendet? –

+0

Ich bin mir nicht sicher, ob ich die Frage verstehe, aber wenn die Ergebnisse aktualisiert werden, kann man nicht so auf diese Weise benachrichtigt werden. – EpicPandaForce

+0

Ich meinte, das ist ein Problem mit 'findAll()', das eine Liste zurückgibt, kein Problem mit der delegierten statischen Methode, oder? –

Verwandte Themen