当前,我遇到一个奇怪的错误,似乎无法修复自己。
this.mViewModel
.getTimeFrameFlowable()
.subscribeOn(Schedulers.io())
.map(new DataHistoryRequest(Fitness.getHistoryClient(this.getActivity(),GoogleSignIn.getLastSignedInAccount(this.getContext()))))
.map(new Function<DisplayData, DisplayData>() {
@Override
public DisplayData apply(DisplayData displayData) throws Exception {
Timber.d("Intercept %s", Thread.currentThread().getName());
return displayData;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<DisplayData>() {
@Override
public void accept(DisplayData displayData) throws Exception {
Timber.d("recieved data");
mChart.setData(displayData.getLineData());
mChart.invalidate();
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
Timber.e(throwable);
}
});
上面的代码在应将数据返还给主线程的情况下仍能正常工作,但此时它只是阻塞了主线程,应用程序挂起。
调试行用
给出拦截RxComputationThreadPool-2
指示到目前为止的工作尚未在主线程上完成。但是错误使用者和下一个使用者都不会被调用一次。因此,它在第二个map函数和subscription函数之间的某个位置崩溃。