Я немного смущен о том, как/когда/зачем закрывать экземпляры области. На протяжении всего моего приложения я никогда не вызывал .close()
на свой экземпляр области, потому что, если я его закрываю, я больше не могу использовать объекты сферы, с которыми я общаюсь. Возможно, точка закрытия экземпляра области будет в моем приложении onDestroy()
так же, как я создаю свой экземпляр в своем приложении onCreate()
. На самом деле я играю с одним экземпляром Realm [*], созданным в моем приложении.Создание и закрытие экземпляров Realm
Является ли это (синглтон Realm) хорошим подходом? и что может случиться, если я никогда не закрою свое царство?
[*] На самом деле теперь я думаю о коллекции экземпляров Realm в коллекции Flywheight, вместо этого вместо экземпляра экземпляра на поток, так как теперь в моем приложении появился сервис Intent и вам нужно получить доступ к Realm из его потока. Я думаю здесь (в Service Intent), я могу закрыть область в onDestroy()
, так как поток будет закончен, делая работу.
первое спасибо за ваше время. Не могли бы вы объяснить немного больше о том, что риск утечки памяти, если не закрыть Королевство? Я начал сталкиваться с проблемами типа: «IllegalStateException: этот экземпляр Realm уже закрыт, что делает его непригодным» и доступ к Realm из неправильного потока. Заранее спасибо. –
Царство выделяет ряд родных ресурсов под капотом. Не закрытие Realms будет поддерживать их, даже если они больше не нужны. Большая проблема заключается в том, что открытые Realms сохраняют версию, которую они используют, поэтому в потоках фона, которые не могут автоматически обновлять Realm, придется отслеживать больше изменений, которые переводят ваш файл Realm, увеличиваясь в размере больше, чем это должен. –