Java 如何在域中正确写入数据?
我有一种在领域中写入数据的方法:Java 如何在域中正确写入数据?,java,android,realm,Java,Android,Realm,我有一种在领域中写入数据的方法: public void setChatsList(final ChatsModel chatsModel) { Realm realm = null; try { realm = Realm.getDefaultInstance(); realm.executeTransaction(new Realm.Transaction() { @Override publ
public void setChatsList(final ChatsModel chatsModel) {
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(chatsModel);
}
});
} finally {
if (realm != null) {
realm.close();
}
}
}
我用这种方法从数据库中读取数据:
ChatsModel getAllChatsList() {
Realm realm = Realm.getDefaultInstance();
RealmResults<ChatsModel> chatsModelResult = realm.where(ChatsModel.class).findAll();
ChatsModel chatsModel = chatsModelResult.get(0);
return chatsModel;
}
为什么??我不能在不发送参数-chatsModelResult.size-1的情况下阅读吗
问题:我如何解决写作和阅读的问题
ChatsModel getAllChatsList() {
Realm realm = Realm.getDefaultInstance(); // <-- realm instance never closed
RealmResults<ChatsModel> chatsModelResult = realm.where(ChatsModel.class).findAll();
ChatsModel chatsModel = chatsModelResult.get(0);
return chatsModel;
}
通过在非looper后台线程上打开未关闭的Realm实例,您的版本将保留在旧版本的Realm上,并且无法自我更新
一种可能是适当的生命周期管理,或者调用realm.refresh。您可以检查realm示例中的所有操作。GetAllChateList是从其他线程调用的吗?在读取之前,尝试在函数中添加realm.refresh。如果这就是问题所在,请看看这篇文章@beeender轻松可能,因为他打开了一个从未关闭过的领域实例
ChatsModel getAllChatsList() {
Realm realm = Realm.getDefaultInstance(); // <-- realm instance never closed
RealmResults<ChatsModel> chatsModelResult = realm.where(ChatsModel.class).findAll();
ChatsModel chatsModel = chatsModelResult.get(0);
return chatsModel;
}