Skip to content

Instantly share code, notes, and snippets.

@mcmatan
Created Aug 17, 2018
Embed
What would you like to do?
class RealmLock {
 private var _uiRealm: Realm? = null
fun getRealm(runningFromTransaction: Boolean = false): Realm {
 return if (MainThread.isMainThread()) {
 if (_uiRealm == null) {
 _uiRealm = Realm.getDefaultInstance()
 }
 _uiRealm!!
 } else {
 if (!runningFromTransaction) {
 //1
 ExceptionThrower.trow("Getting realm instance on back thread must happen only from within transaction")
 }
 Realm.getDefaultInstance()
 }
 }
fun transaction(block: (realm: Realm) -> Unit) {
 var realm: Realm? = null
 try {
 realm = this.getRealm(true)
 realm.executeTransaction {
 block(it)
 }
 } finally {
 if (!MainThread.isMainThread()) {
 //2
 realm?.close()
 }
 }
 }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment