Android 将RealmChangeListener添加到使用copyToRealmOrUpdate创建的对象

Android 将RealmChangeListener添加到使用copyToRealmOrUpdate创建的对象,android,realm,Android,Realm,我有一个消息传递应用程序,它使用RealmDB为用户存储消息和线程。消息线程是RealmObjects。我试图弄清楚如何添加一个RealmChangeListener,当任何线程更新时(即收到一条新消息),它将被触发。线程最初是通过API中的syncMessages函数从我的MessageThreadList活动中检索并随后更新的。似乎无论我在哪里尝试添加侦听器,我都会得到 无法从非托管对象添加侦听器 错误。 我的代码: MessageThread.java ThreadListActivity

我有一个消息传递应用程序,它使用RealmDB为用户存储消息和线程。消息线程是
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();
    }