gpt4 book ai didi

android - 无意中调用了 Realm 更改监听器

转载 作者:行者123 更新时间:2023-11-29 18:36:19 24 4
gpt4 key购买 nike

基本上我有两个模型,聊天和消息。 Chat 包含一个 RealmList 类型的字段,其中包含属于相应 Chat 的所有消息。我的问题:当我尝试将消息“a”( Realm 内已存在)添加到聊天“b”(--> 代码)时,调用了 RealmChangeListener。 RealmChangeListener 正在监听整个消息表。调用 OrderedCollectionChangeSet 时会更改数组,这些更改包含聊天“b”内的消息字段中包含的所有消息。我的问题是这是否是有意为之的,为什么会这样?

我试图通过注释掉不同的行来找出问题所在。但最后,当我向聊天中添加消息时,总是会调用 ChangeListener。

class Chat {
...
val messages: RealmList<Message> = RealmList()
...
}

realm.executeTransaction {
newMessage = realm.copyToRealm(aMessage)
chat.messages.add(newMessage)
}

allMessage.addChangeListener { messages: RealmResults<Message>,
changes: OrderedCollectionChangeSet? ->
//Always invoked when above transaction runs
//changes contains changes-Array with all Messages from above
chat
}

class Message {
@PrimaryKey
var id: String = UUID.randomUUID().toString() + System.currentTimeMillis()
var messageId: Long = System.currentTimeMillis()
var messageContent: FlatMessage? = null
var user: User? = null
var createdAt: Long = System.currentTimeMillis()
var updatedAt: Long = System.currentTimeMillis()
var chat: Chat? = null
var isNew: Boolean = false
var isEdited: Boolean = false
var insertDate: Date = Date()
var isBotMessage: Boolean = false
}

我希望只有在将消息添加到消息表时才会调用 changeListener,而不是在将现有消息添加到聊天的 RealmList 字段时调用。

最佳答案

我在 github 上打开了一个问题并得到了答案:https://github.com/realm/realm-java/issues/6401

关于android - 无意中调用了 Realm 更改监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54188149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com