我正在使用Realm和RxAndroid。我有这个奇怪的问题,其中领域没有采取对DB进行的最新修改。
我正在使用两种方法。
Observable<Integer> save(Bitmap bitmap).
Observable<Integer> getImageList(Context applicationContext).
喜欢这个
Activity 1
getImageList(applicationContext)
button click -> Activity 2
save(bitmap)
finish()
getImageList(applicationContext)
这种方法&#34;保存&#34;基本上将新创建的模型添加到RealmList中。
private Observable<Integer> save(Bitmap bitmap) {
return Observable.create((Observable.OnSubscribe<Integer>) subscriber -> {
--------------------------------------
-----Various file creation stuff------
--------------------------------------
UserImagesModel model = realm
.where(UserImagesModel.class)
.findFirst();
//ImageModel class extends RealmObject
ImageModel imageModel = new ImageModel();
realm.beginTransaction();
//realm object must be Edited inside transaction
model.getResponse().add(0, imageModel);
realm.commitTransaction();
realm.close();
subscriber.onNext(1);
subscriber.onCompleted();
}
}
Ans此方法获取已保存的列表。
public Observable<Integer> getImageList(Context applicationContext) {
return Observable.create((Observable.OnSubscribe<Integer>) subscriber -> {
AppUtils.logD("User image observable instance " + this);
UserImagesModel model;
Realm realm = Realm.getInstance(applicationContext);
model = realm.where(UserImagesModel.class).findFirst();
^
This model doesn't replicate data added in save call
------------------------------------------------
----Various validation and service calls.-------
------------------------------------------------
subscriber.onCompleted();
realm.close();
});
}
}
正如我在代码中提到的,我从Realm获得的UserImageModel并没有复制我在save方法中所做的更改。
当我第二次调用getImageList方法 时会出现问题。当我在Observable.create中打印this.toString时,它会打印出第一次返回的相同对象。
所以我相信这个问题似乎与我使用RxAndroid的方式有关。谁能告诉我我失踪了什么?我该如何解决?
更新:
经过几次测试后,我意识到Observable.create里面的this.toString实际上指的是父对象,因为我已经使用了lamda表达式,所以这似乎不是问题,现在我回到原点;(