2017-06-17 3 views
0

私はドクさん、あなたがminSdkVersionが> = 19とJava> = 7でアプリ上で動作するように運を持っているなら、あなたがしよう - と、リソースを使用することができ、Javaのhttps://realm.io/docs/java/latest/#closing-realm-instancesのためのレルムの中で見つかった:Android minSdkVersion> = 19にはRealm.close()が必要ですか?

try (Realm realm = Realm.getDefaultInstance()) { 
// No need to close the Realm instance manually 
} 

私はminSdkVersion> = 19 realm.close()が必要であることを知りたいですか?または単にスレッドとループの必要はありません閉じるRealmインスタンスを手動でですか?

protected Void doInBackground(Void... params) { 
    Realm realm = Realm.getDefaultInstance(); 
    try { 
     // ... Use the Realm instance ... 
    } finally { 
     realm.close(); 
    } 

    return null; 
} 

があなたの代わりに(API 19+)

protected Void doInBackground(Void... params) { 
    try (Realm realm = Realm.getDefaultInstance()) { 
     // ... Use the Realm instance ... 
    } 
    return null; 
} 

をこの構築を行うことができ、それらは等価です:

答えて

1

ドキュメントは、その代わりに、この構築物の言います。


それはあなたが実際にあなたがバックグラウンドスレッドで、それを使用している場合、あなたはレルムimplements Closableのでtry with resourcesは自動的でrealm.close()を呼び出しているという事実を活用できるだけのことを、ローカルレルムのインスタンスを終了する必要がないことを言っていません。 finally

+0

こんにちは@EpicPandaForceこれは、realmの実装がClosableの場合のみ可能ですか? API 19+では、クローズ可能なオブジェクトはtryの終わりに閉じていますか? – Saeed

+0

RealmはClosableを実装しているので、 'try-with-resources'でifを使うことができます。したがって、Realmは技術的にはtry(...){...}の最後のfinallyブロックで自動閉鎖されます。 – EpicPandaForce

関連する問題