【发布时间】:2021-05-21 01:36:34
【问题描述】:
我在使用带有 Room 的 RXJava 时遇到了一些问题。我尝试插入一些数据并在插入 (onSucess) 之后调用 finish() 以关闭活动。
如果我不在活动上调用finish(),一切都会好起来的,我插入我想要的数据,返回的id是正确的(1、2、3、4......)并且数据显示在表格上.如果调用finish() 并再次打开活动,onSucess(Long aLong) 仅返回 id 1 并且表不再更新。
有代码:
Client client = new Client();
client.birth_date = birthDate.toString();
client.health_status = healthStatus;
client.lives_with = livesWith;
client.name = name;
client.school_time = schoolTime;
singleObserver = database().clientDAO().insert(client);
singleObserver.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new DisposableSingleObserver<Long>() {
@Override
public void onSuccess(Long aLong) {
String formated = String.format(getApplication().getString(R.string.new_client_register), client.name);
Toast toast = Toast.makeText(getApplication(), formated, Toast.LENGTH_SHORT);
toast.show();
finish();
}
@Override
public void onError(Throwable e) {
}
});
在 DAO 中我只是声明:
@Insert
Single<Long> insert(Client client);
我被困了 2 天,我不知道我做错了什么。问题是,为什么我完成活动后Single 的行为会有所不同。我试图取消订阅并以某种方式搜索以销毁附加到它的变量,但行为仍然相同。
有人可以帮助我吗?
【问题讨论】:
标签: java android rx-java android-room sql-insert