我正在使用reformation和Rxjava来处理我的mvvm android应用程序的api调用。根据一些教程,我目前正在使用这样的RxJava。
视图模型.java
CompositeDisposable disposable = new CompositeDisposable();
private void fetchTodolist(){
loading.setValue(true);
disposable.add(
service.getToDoList("A1833")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver>>() {
@Override
public void onSuccess(ApiResponse> value) {
if(value.getStatus() == 200){
//on call success code
} else {
//on call rejected code
}
}
@Override
public void onError(Throwable e) {
// on call error code
}
})
);
}
现在我想将成功调用的api调用的结果缓存到room数据库中。所以我需要使用另一个异步方法,并尝试重用之前创建的新线程。这是密码。
private void fetchTodolist(){
loading.setValue(true);
Scheduler a = Schedulers.newThread();
disposable.add(
service.getToDoList("A1833")
.subscribeOn(a)
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSingleObserver>>() {
@Override
public void onSuccess(ApiResponse> value) {
if(value.getStatus() == 200){
a.scheduleDirect(new Runnable() {
@Override
public void run() {
long inserted = dao.insert(value);
}
});
} else {
//on call rejected code
}
}
@Override
public void onError(Throwable e) {
// on call error code
}
})
);
}