Можно ли писать в Realm в основной теме?
По сути, я хотел бы написать ObjectA
в Realm прямо перед запуском ActivityA
.
После запуска ActivityA
ему требуется немедленный доступ (в onCreate
) к ObjectA
- могу ли я также читать в основном потоке?
По сути, этот ObjectA
слишком велик, чтобы пройти через пакет, поэтому мне нужно сохранить его в кеше.
Сначала я думал о том, чтобы сохранить объект в кеше в памяти, а затем сохранить его в Realm после начала действия, но мне было интересно, могу ли я пропустить необходимость писать свой собственный кеш в памяти.
ObjectA
? Вы можете поместить его в Realm черезinitialData()
? Причина, по которой обычно не рекомендуется использовать транзакцию в потоке пользовательского интерфейса, заключается в том, что 1.) транзакции фонового потока блокируют вызовbeginTransaction()
, поэтому вы можете отключить ANR, если у вас есть транзакции потока bg, и 2.) он заставляет асинхронные запросы выполняться синхронно. В противном случае это работает, и вы все равно захотите использоватьfindFirst()
- person EpicPandaForce   schedule 09.06.2017initialData()
? Да, имеет смысл запускать их в фоновом потоке. Поэтому я думаю сначала хранить эти данные в памяти, а затем лениво хранить их в Realm. Мне просто было интересно, смогу ли я избежать кеша в памяти с помощью Realm, но похоже, что я не могу. - person LyteSpeed   schedule 09.06.2017In which case I **need to also load it from the background thread**.
неправильно, потому что Realm работает не так. Realm предоставляет прокси-сервер с ленивой загрузкой, ограниченный потоком, для потока пользовательского интерфейса вам необходимо получить доступ к объекту в потоке пользовательского интерфейса с помощью экземпляра Realm потока пользовательского интерфейса. В вашем случае, если у вас нет длительных транзакций фонового потока, даже сохранение в потоке пользовательского интерфейса в порядке. - person EpicPandaForce   schedule 09.06.2017