レルムインスタンスをどのように/いつ/なぜ閉じるのかちょっと混乱します。私のアプリケーションの全体を通して、私はrealmインスタンス上で.close()
を呼び出すことは一度もありません。なぜなら、私がそれを閉じると、もはや私が扱う領域オブジェクトを使用することができなくなるからです。おそらく、realmインスタンスを閉じるポイントは、アプリケーションonDestroy()
にあります。私のアプリケーションでは、自分のインスタンスを作成するのと同じ方法でonCreate()
です。実際には私のアプリケーションで作成されたRealm [*]のシングルトンインスタンスで遊んでいます。レルムインスタンスをインスタンシエートして閉じる
これは(レルムシングルトン)は良いアプローチですか?レルムを閉じないとどうなりますか?
[*]実際には、サービスインテントが自分のアプリでプレイするようになり、スレッドからRealmにアクセスする必要があるため、実際には、RealmインスタンスのFlywheightコレクションで、スレッドごとにインスタンスを格納することを考えています。私はここ(サービスインテント)で、スレッドが作業を終了するのでonDestroy()
で領域を閉じることができると思います。
お時間を頂きましてありがとうございます。レルムを閉じないと、メモリリークの危険性のポイントをもう少し説明してください。私は型の問題に直面し始めました: "IllegalStateException:このRealmインスタンスはすでに閉じられており、使用できなくなりました"と間違ったスレッドからRealmにアクセスし始めました。前もって感謝します。 –
レルムは、いくつかのネイティブリソースをフードの下に割り当てます。レルムを閉じないと、もはやそれらが必要なくなったとしても、それらを守ります。しかし、Realmが開いているバージョンでは、使用しているバージョンを保持しているため、Realmを自動更新しないバックグラウンドスレッドでは、Realmファイルに変換されるより多くの変更を追跡する必要があります〜する必要があります。 –