LoginSignup
3

More than 5 years have passed since last update.

Realm使ってみたメモ

Posted at

AndroidでRealmを導入してみたので気になったところメモ。
公式の情報が充実してるので本当にちょっとしたものですが。

ちゃんとclose()を呼ぶ

公式に書いてますが、 Realm.getInstance() 呼んだらかならず Realm.close() を対にして呼ぶ。ちょっとソースを読みましたが、 Realm.getInstance() した回数だけ参照カウンタがインクリメントされているので、きちんと同じ数の Realm.close() が必要そう。
あと、RealmインスタンスはThreadローカルで作成されるので、開くのと閉じるのは同じThreadで呼ばないとだめ。

RealmインスタンスはThreadをまたいで参照できない

これも公式に明記。なのでRxJavaと一緒に使ってるときなんかはちょっと使いづらさを感じています(個人の感想です)。今のところ複数のThreadをまたいで参照したい場合は、POJOに詰め替えてから別Threadに渡すのが定石でしょうか。
このへんとか参考。
https://realm.io/news/using-realm-with-rxjava/

signal 11がわりと出る

いくつかの端末(4.3未満)でSIGSEGV(signal 11)が発生して突然死する事象が。RealmがOOMを投げているわけでもなく、 Activity.onLowMemory()が呼ばれるでもなく、突然signal 11で終了。
だいたいの場合は android::isHardwareAccelerated="false" を指定すれば異常終了はしなくなりますが描画がクソ遅くなる・・・ううーん(悩み中)。
まだメジャーバージョンが1になってないライブラリなので、ある程度は仕方ないのかも。

Bundleにつっこめない

Parcelable実装すれば行けそうな気もしますが、RealmObjectはRealm以外で生成しちゃダメ的なこと書いてるので、たぶんダメそう・・・。このへんどうにかなると使い勝手よくなりそうなんですが。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3