Real Time data updates
Events to be changed if the data was changed from Realm Browser
The data wasn't notified if i changed a value of an event in realm browser.The OnChange listener works if i listen like this
realm.addChangeListenerbut doesn't work with Realm Results
- Listen Realm Result
on fragment onResume - User Click the dialog to add Data
- Data got into the realm object server
- User Change value in realm object server
realm.where(Event.class)
.findAll()
.addChangeListener(new RealmChangeListener<RealmResults<Event>>() {
@Override public void onChange(RealmResults<Event> element) {
Log.d("Data,","data changed");
}
});
Realm version(s): 2.3.0
Realm sync feature enabled: yes
Android Studio version: 2.2
Which Android version and device: 6.0 / One plus 2
findAll() is returning a RealmResults but my guess is that it is GC'ed and the listener is GC'ed too. Can you try to keep a strong reference to your RealmResults to prevent GC?
You need to retain a strong reference (typically a field reference) to your RealmResults
@Zhuinden Its still not working .the On change event was not fired.
But it does work in the RealmTasks example, no? :confused:
@Zhuinden the example works ..its happening only in my app.The on change got triggered if i use like this
realm.addChangeListener(new RealmChangeListener
@Override public void onChange(Realm element) {
}
});
but
if i tried to listen events it doesn't work anymore
RealmResults
list.addChangeListener(new RealmChangeListener
@Override public void onChange(RealmResults
}
});
But the logs show
REALM_JAVA D REALM_CHANGED : io.realm.HandlerController@183c023
REALM_JNI V --> Java_io_realm_internal_SharedRealm_nativeRefresh__J -894174520
V --> Java_io_realm_internal_SharedRealm_nativeGetVersion -894174520
V --> Java_io_realm_internal_SharedRealm_nativeIsClosed -894174520
V --> Java_io_realm_internal_SharedRealm_nativeIsClosed -894174520
V --> Java_io_realm_internal_SharedRealm_nativeIsClosed -894174520
V --> Java_io_realm_internal_SharedRealm_nativeIsClosed -894174520
V --> Java_io_realm_internal_SharedRealm_nativeIsClosed -894174520
V --> finalize_table -1011437056
V --> finalize_unchecked_row -1108875968
V --> finalize_unchecked_row -1070607824
V --> finalize_unchecked_row -1070606240
RealmResults list = realm.where(Event.class).between("date", to, from).findAll();
Make sure you have a RealmResults field
RealmResults list;
public void method() {
list = realm.where(Event.class).between("date", to, from).findAll();
list.addChangeListener(new RealmChangeListener<RealmResults>() {
@Override public void onChange(RealmResults element) {
}
});
}
( are you sure between uses to, from? I think it's from, to)
Thanks its working now ..its because the RealmResults field
Most helpful comment
Thanks its working now ..its because the RealmResults field