android - Realm 模型从其他线程更新,但应该通知适配器

标签 android multithreading realm

我在 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/

相关文章:

java - 根据其他TextView更改TextView值

android - Android MVVM : Should the view notify the view-model for every user interaction even trivial ones (only have UI consequence/no data)

java - 在 Java Web 爬虫中实现线程

ios - 新模型的架构版本更新

android - AIR/Android NFC 标签正在打开浏览器

Android:静态数组列表在服务中变得空洞

multithreading - 在计时器上运行任务

multithreading - 如何在iOS中正确关闭WebRTC peerConnection?

ios - Realm 快速更改主键

java - 如何针对两个条件执行 RealmQuery