2016-05-25 4 views
0

После v0.91.0 все устаревшие методы в Realm удаляются, включая refresh().Обновление Android Realm repalce с 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(); 
    } 
} 

Если я заменить refresh() с waitForChange(), он блокируется до следующего изменения не происходит (конечно, в не-нити петлителя).

Как я могу заставить его не блокировать текущий поток, а просто передавать его, когда текущее состояние является современным или блокируется, если есть что-то, что должно подождать?

Или если я использую Realm, как указано выше, (в любое время закрываю его) в потоке без петлирования, например, Schedulers.io в Rx, does Realm.getInstance() Возвращает всегда новейший моментальный снимок, потому что ссылка на кешированный экземпляр на нуль?

ответ

1

Вам необходимо позвонить по номеру refresh сразу после звонка getInstance(). Царство, возвращенное с getInstance(), всегда будет актуальным.

+1

Благодарим за быстрый ответ! Если он кэшируется внутри области (используется в той же теме), всегда ли он самый новый? –

Смежные вопросы