我正在处理一些聊天 - 应用复杂的消息。 来自API的消息存储在领域DB中。
当我收到消息时:在API响应后调用,反序列化完成,消息更正:
realm.beginTransaction();
realm.copyToRealmOrUpdate(listOfBaseMessageResponses);
realm.commitTransaction();
db中的消息被替换,我被迫在我的活动中创建一个List并尝试自己处理更改。
活动中跟踪的变化:
messagesChangedListener = new RealmChangeListener() {
...
}
mBaseMessageResponsesRealm = realm.allObjects(BaseMessageResponse.class);
mBaseMessageResponsesRealm.addChangeListener(messagesChangedListener);
获取消息的方式:
return realm.allObjects(BaseMessageResponse.class);
BaseMessageResponse
类(getter和setter存在。为了更好地理解不显示):
@SerializedName("clr")
@Expose
@PrimaryKey
private String clr;
@SerializedName("cap")
@Expose
private String cap;
@SerializedName("eoc")
@Expose
private int eoc;
@SerializedName("list")
@Expose
private RealmList<MessageInResponse> list = new RealmList<MessageInResponse>();
...
此外MessageInResponse
包含嵌套类。
为什么要更换邮件?我尝试了很多方法来解决这个问题,但没有结果。
可能是copyToRealmOrUpdate
方法的PK和逻辑问题?