Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

동결 아키텍처 - 코틀린 SDK (Kotlin SDK)

다른 Realm SDK와 달리 코틀린 SDK (Kotlin SDK) 는 기본 데이터와 동시에 업데이트 되는 라이브 객체 및 컬렉션을 제공하지 않습니다. 대신 코틀린 SDK ( 코틀린 SDK (Kotlin SDK) )는 스레드 간에 안전하게 전달할 수 있는 동결된 객체 에만 독점적으로 작동합니다.

동결된 객체는 Realm의 데이터가 변경될 때 자동으로 업데이트되지 않기 때문에 다른 Realm SDK에서 사용했을 수 있는 라이브 객체와 약간 다르게 작동합니다.

객체를 업데이트 하거나 삭제 객체가 라이브 상태여야 합니다. mutableRealm.findLatest() 를 사용하여 트랜잭션 에서 동결된 객체 를 라이브 객체 로 변환할 수 있습니다. 라이브 객체는 쓰기 (write) 또는 쓰기 차단( writeBlocking) 클로저 내의 쓰기 트랜잭션 (write transaction) (write transaction) 내에서만 액세스할 수 있습니다.

쓰기 (write) 클로저에서 반환된 객체는 쓰기 트랜잭션( 쓰기 트랜잭션 (write transaction) )이 완료되면 동결된 객체가 됩니다.

val sample: Sample? =
realm.query<Sample>()
.first().find()
// delete one object synchronously
realm.writeBlocking {
if (sample != null) {
findLatest(sample)
?.also { delete(it) }
}
}
// delete a query result asynchronously
GlobalScope.launch {
realm.write {
query<Sample>()
.first()
.find()
?.also { delete(it) }
}
}

객체가 고정되었는지 여부는 isFrozen() 메서드를 사용하여 확인할 수 있습니다.

Realm 클래스는 더 이상 스레드에 한정되지 않으므로 여러 스레드에서 단일 영역 을 주식 할 수 있습니다. 더 이상 Realm 영역 ( )를 호출하여 Realm 수명 주기를 명시적으로 처리하다 할 필요가 없습니다.

객체 및 컬렉션의 변경 사항에 액세스 하려면 코루틴 을 사용합니다. 및 Flow API . 변경 사항은 스레드로부터 안전하므로 모든 컨텍스트에서 액세스 할 수 있습니다. 알림은 전용 내부 알림 스레드에서 처리됩니다. 이제 고정된 객체가 변경 리스너를 지원 합니다.

val config = RealmConfiguration.Builder(schema = setOf(Task::class))
.build()
val realm = Realm.open(config)
// fetch objects from a realm as Flowables
CoroutineScope(Dispatchers.Main).launch {
val flow: Flow<ResultsChange<Task>> = realm.query<Task>().asFlow()
flow.collect { task ->
Log.v("Task: $task")
}
}
// write an object to the realm in a coroutine
CoroutineScope(Dispatchers.Main).launch {
realm.write {
copyToRealm(Task().apply { name = "my task"; status = "Open"})
}
}

중요

Flows API 에는 Kotlinx 코루틴이 필요합니다.

코틀린(코틀린 (Kotlin) ) 멀티플랫폼 프로젝트 에서 Flows API 를 사용하려면 kotlinx.coroutines 파일 을 설치하세요. 라이브러리.

다른 Realm SDK와 마찬가지로 쓰기 (write) 트랜잭션(write transaction)은 암시적으로 영역 을 디스크에 저장된 최신 버전의 데이터로 진행합니다.

다음도 참조하세요.

알림에 대한 자세한 내용은 변경 사항에React 을 참조하세요.

Realm 객체는 여전히 기본값 지연 로드됩니다. 이를 통해 디스크에서 많은 양의 데이터를 읽지 않고도 대규모 객체 컬렉션을 쿼리 할 수 있습니다. 이는 또한 객체 의 필드 에 처음 액세스 하면 항상 가장 최근의 데이터가 반환된다는 의미이기도 합니다.

돌아가기

Realm