我在 websocket onReponse 方法中将消息从适配器发送到 Websocket 我正在更新 Realm Model 类,但进程在后台进行并且不会向前移动: 在这里你可以看看我的代码:
public static void updateMsgStatus(String userId, 字符串消息ID, MSG_STATUS 消息状态){
Realm realm = Realm.getDefaultInstance();
Message message = realm.where(Message.class)
.equalTo(Message.USER_ID, userId)
.equalTo(Message.MESSAGE_ID, messageId).findFirst();
realm.beginTransaction();
message.setMsgStatus(msgStatus.ordinal());
realm.copyToRealmOrUpdate(message);
realm.commitTransaction();
}
在这一行中 message.setMsgStatus(msgStatus.ordinal());在后台什么都不做但我在这里等着:
如果我在这个方法中创建自己的线程,那么 realm 将不会通知适配器 提前致谢:)
最佳答案
您可以在数据绑定(bind)/呈现的 Realm 实例上使用更改监听器,文档 here . 我相信您会想象这会通知您已订阅的对象发生更改。
realm = Realm.getDefaultInstance();
RealmResults<Message> messages = realm.where(Message.class).findAllAsync();
messageChangeListener = new RealmChangeListener() {
@Override
public void onChange() {
// update your dataset
mAdapter.notifyDataSetChanged();
}
};
messages.addChangeListener(messageChangeListener);
关于android - Realm 模型从其他线程更新,但应该通知适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791660/