У меня проблема с закрытым экземпляром Realm. Я использую ThreadPoolExecutor для многопоточности, и каждый поток использует собственный экземпляр Realm. Я вызываю Realm.getDefaultInstance() перед каждой операцией с Realm. И каждый раз, когда я обращаюсь к Realm, я получаю старые данные, потому что каждый раз я обращаюсь к Realm из разных потоков.
Я просмотрел источники Realm и увидел 33 локальных ссылки на Realm. Когда я вызываю Realm.getDefaultInstance().close(), а затем проверяю, закрыт ли объект, я получаю false. Но сейчас у меня 32 ссылки. Как я могу закрыть все экземпляры Realm, которые сбрасывают кеш памяти и извлекают фактические данные?
Realm.getDefaultInstance()
, должен быть связан сrealm.close()
, прочтите realm.io/docs/java/latest/ - person EpicPandaForce   schedule 19.04.2017onCreate()
и закрытие их вonDestroy()
для потока пользовательского интерфейса. Если бы вы закрыли какое-либо действие и все области в потоке пользовательского интерфейса были признаны недействительными, это было бы очень плохо, не так ли? :п - person EpicPandaForce   schedule 19.04.2017I need close every local instance of Realm?
это обычно легко, потому что каждый фоновый поток должен иметь только 1 локальный экземпляр, полученный с помощьюtry(Realm realm = Realm.getDefaultInstance()) { ... }
, упаковывающий время жизни потока, и передаваемый методам в качестве аргумента. - person EpicPandaForce   schedule 19.04.2017