我试图在一个服务上写入数据并从另一个服务访问它。
我从其他服务获得的数据未更新,它是旧版本。
重启应用程序有时会获得更新的数据。
这些服务都是正常的Service
扩展,因此只有UI线程。
而且我没有在应用中的任何位置打开任何realm
个实例。
我如何确保它始终是新的和更新的?
写作 -
data
使用realm.copyFromRealm(...)
try (Realm realm = Realm.getDefaultInstance()) {
if (realm != null) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(@NonNull Realm realm) {
data.setValue("New value ...");
realm.insertOrUpdate(data);
}
});
}
}
阅读 -
Data data = null;
try (Realm realm = Realm.getDefaultInstance()) {
if (realm != null) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(@NonNull Realm realm) {
data = realm.copyFromRealm(realm.where(Data.class).equalTo("Id", id).findFirst());
}
});
}
}
数据 -
public class Data {
...
private String Value;
public String getValue() { return Value; }
public void setValue(String v) { Value = v; }
...
}
编辑 -
我最终将两种服务合并为一种,现在可以使用。但是,如果有人能提供一些提示或有类似的问题,我会期待。
答案 0 :(得分:0)
我如何确保它始终是新的并更新?
请勿使用copyFromRealm()
。并使用RealmResults
字段变量+ RealmChangeListener
RealmResults<T> results;
RealmChangeListener<RealmResults<T>> listener = new RealmChangeListener<...>() {
@Override public void onChange(RealmResults<T> results) {
...
}
}
public void something() {
results = realm.where(...).findAll*();
results.addChangeListener(