我有一个我需要更改的本地存储的域对象>然后上传到我的后端。所以在userService.updateUser()里面我通过调用:Realm realm = Realm.getDefaultInstance()并将该User对象传递给我的retrofit2调用来获取我当前的用户对象,但是我得到了Realm错误:
从不正确的线程访问领域。 Realm对象只能在创建它们的线程上访问。
所以我订阅了Schedulers.newThread()并在AndroidSchedulers.mainThread()上观察,所以我想这就是为什么会抛出错误......我怎么能避免这个问题呢?
mCompositeDisposable.add( userService.updateUser()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<User>(){
@Override
public void onNext(User user) {
if(mProgressDlg != null) mProgressDlg.dismiss();
}
@Override
public void onError(Throwable t) {
if(mProgressDlg != null) mProgressDlg.dismiss();
alertDlg.showIt(mResources.getString(R.string.err_saving_profile),
stringFormatter.getApiErrorMsg(t), "",
"", mParentActivity, JAlertDialog.POSITIVE,null);
}
@Override
public void onComplete() { }
}));
答案 0 :(得分:-1)
这有效:
mCompositeDisposable.add( userService.updateUser( Realm.getDefaultInstance().copyFromRealm(mUser) )
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith
...