kotlin-extensions / io.realm.kotlin / addChangeListener

addChangeListener

fun <E : RealmModel> E.addChangeListener(listener: RealmChangeListener<E>): Unit

값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 트리거되는 변경 리스너를 RealmObject에 추가합니다.

변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

class MyActivity : Activity {

    private var person: Person?

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        person = realm.where<Person>().findFirst()
        person?.addChangeListener(RealmChangeListener { person ->
            // React to change
        })
    }
}

매개변수

listener - 알림을 받을 변경 리스너입니다.

예외

IllegalArgumentException - objectnull 또는 관리되지 않는 객체이거나 변경 리스너가 null 인 경우

IllegalStateException - 비-이벤트 루프 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.

IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.

fun <E : RealmModel> E.addChangeListener(listener: RealmObjectChangeListener<E>): Unit

RealmObject에 변경 리스너를 추가하여 변경 사항에 대한 자세한 정보를 가져옵니다. 값 필드 또는 참고 RealmObject 필드가 변경되거나 RealmList 필드 자체가 변경되면 리스너가 트리거됩니다.

변경 리스너를 등록해도 기본 RealmObject가 가비지 수집되는 것을 방지할 수는 없습니다. RealmObject가 가비지 수집되면 변경 리스너 트리거가 중지됩니다. 이를 방지하려면 클래스 변수와 같이 적절한 길이로 강력한 참고를 유지하세요.

class MyActivity : Activity {

    private var person: Person?

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        person = realm.where<Person>().findFirst()
        person?.addChangeListener(RealmObjectChangeListener { person, changeSet ->
            // React to change
        })
    }
}

매개변수

listener - 알림을 받을 변경 리스너입니다.

예외

IllegalArgumentException - objectnull 또는 관리되지 않는 객체이거나 변경 리스너가 null 인 경우

IllegalStateException - 비-이벤트 루프 또는 IntentService 스레드에서 리스너를 추가하려고 하는 경우.

IllegalStateException - 트랜잭션 내에 리스너를 추가하려는 경우.