Android 将RealmChangeListener添加到使用copyToRealmOrUpdate创建的对象
我有一个消息传递应用程序,它使用RealmDB为用户存储消息和线程。消息线程是Android 将RealmChangeListener添加到使用copyToRealmOrUpdate创建的对象,android,realm,Android,Realm,我有一个消息传递应用程序,它使用RealmDB为用户存储消息和线程。消息线程是RealmObjects。我试图弄清楚如何添加一个RealmChangeListener,当任何线程更新时(即收到一条新消息),它将被触发。线程最初是通过API中的syncMessages函数从我的MessageThreadList活动中检索并随后更新的。似乎无论我在哪里尝试添加侦听器,我都会得到 无法从非托管对象添加侦听器 错误。 我的代码: MessageThread.java ThreadListActivity
RealmObjects
。我试图弄清楚如何添加一个RealmChangeListener
,当任何线程更新时(即收到一条新消息),它将被触发。线程最初是通过API中的syncMessages函数从我的MessageThreadList
活动中检索并随后更新的。似乎无论我在哪里尝试添加侦听器,我都会得到
无法从非托管对象添加侦听器
错误。我的代码: MessageThread.java ThreadListActivity.java MyAPI.java
受静态保护的void syncMessages(){
Realm Realm=Realm.getDefaultInstance();
realm.beginTransaction();
JSONArray jsonMsgThreads=getJSONFromServer();
for(int i=0;i
如果无法将其添加到此处的任何位置,是否可以在每个MessageThread上设置侦听器?公共类ThreadListActivity{
public class ThreadListActivity {
private Realm realm;
private RealmResults<MessageThread> messageThreads;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
Realm.init(this);
realm = Realm.getDefaultInstance();
messageThreads = realm.where(MessageThread.class).findAll();
messageThreads.addChangeListener((results) -> {
// any message thread was modified
}
MyAPI.syncMessages();
}
私人领域;
私有RealmResults消息线程;
@凌驾
创建公共void(Bundle){
super.onCreate(bundle);
Realm.init(this);
realm=realm.getDefaultInstance();
messageThreads=realm.where(MessageThread.class).findAll();
messageThreads.addChangeListener((结果)->{
//任何消息线程都已修改
}
MyAPI.syncMessages();
}
public class ThreadListActivity {
private Realm realm;
@Override
public void onCreate() {
Realm.init();
realm = Realm.getDefaultInstance();
MyAPI.syncMessages();
}
static protected void syncMessages() {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
JSONArray jsonMsgThreads = getJSONFromServer();
for (int i = 0; i < jsonMsgThreads.length(); i++) {
MessageThread m = new MessageThread(jsonMsgThreads.getJSONObject(i));
realm.copyToRealmOrUpdate(m);
}
realm.commitTransaction();
}
public class ThreadListActivity {
private Realm realm;
private RealmResults<MessageThread> messageThreads;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
Realm.init(this);
realm = Realm.getDefaultInstance();
messageThreads = realm.where(MessageThread.class).findAll();
messageThreads.addChangeListener((results) -> {
// any message thread was modified
}
MyAPI.syncMessages();
}