2016-05-25 5 views
0

v0.91.0以降、refresh()を含むRealmの廃止されたメソッドはすべて削除されます。Android Realm repalce refresh with waitForChange

私は、レルムのインスタンスは最新のデータを持っていることを確認するには、以下のようなrefresh()を使用しました。

public static <T> T query(RealmActionWithResult<T> runnable, T defaultValue) { 
    Realm realm = Realm.getInstance(getConfiguration()); 
    try { 
     realm.refresh(); 
     return runnable.run(realm); 
    } catch (Exception e) { 
     return defaultValue; 
    } finally { 
     realm.close(); 
    } 
} 

私はwaitForChange()refresh()を交換した場合、次の変更が(非ルーパー糸で、もちろん)が起こるまでは、それがブロックされています。

どのように私はそれがない、現在のスレッドをブロックしますが、現在のレルムが最新の1またはブロック待たなければならないものがある場合であるとき、ちょうどそれを渡すことができますか?

または、RxのSchedulers.ioのような非ルーパースレッドの上記のパターン(毎回閉じる)のようなRealmを使用すると、Realm.getInstance()はスレッドごとのキャッシュされたインスタンス参照がゼロであるため常に最新のスナップショットを返しますか?

答えて

1

あなたは正しいgetInstance()を呼び出した後refreshを呼び出す必要はありません。レルムはgetInstance()から返され、常に最新の状態になります。

+1

すぐにお返事ありがとう! (同じスレッドで使用される)レルム内にキャッシュされている場合は、常に最新のものですか? –