質問: RealmSampleApplication.instance.inMemoryRealm と Application クラスの保持している Realm を参照し close を行わないとしたら何か問題がありますか?宜しくお願いします。
回答: InMemoryなRealmの場合、すべてのRealmインスタンスがクローズされた瞬間にデータは全て捨てられてしまうので、データを保持したいあいだは少なくとも1つのRealmインスタンスが残っている必要があります。 カスタムのApplicationクラスを定義して、onCreate()で`Realm.getInstance()`(もしくは`Realm.getDefaultInstance()`)したインスタンスをフィールドに保持させるのがおすすめです。そのうえで、各Activityでは通常のように`getInstance()`/`close()`を行ってください。 注意点としては、非Looperスレッドに保持するのは避けたほうが良いということです。 というのも、非LooperスレッドのRealmは他のスレッドでデータが変更されても自動的に最新バージョンへの更新が行われないので、そのスレッドでいつまでも古いデータを見続けてしまいます。 そうすると、古いバージョンから最新バージョンまでのすべてを差分の形で保持しないといけなくなってしまい使用メモリが増大してしまいます。 この点からも、メインスレッドであることが保証されているアプリケーションクラスの `onCreate()` が適しています。