我正在使用Retrofit2
和RxJava2
进行网络请求。
我有一个简单的可运行对象,其中包括:
override fun run() {
handler.postDelayed(this, interval)
DummyService.syncData(context, null)
.observeOn(AndroidSchedulers.mainThread())
.subscribe( response -> {
//nothing
}, e -> {
//nothing
});
}
我的syncData
函数如下所示:
fun syncData(): Single<Unit> {
Log.d("...", "sync before")
return service.test(null)
.onErrorResumeNext(ErrorHandler(BaseErrorParser()))
.map { jsonApiObject ->
Log.d("...", "sync WHOLE DATA")
....
}
}
在日志中,我可以看到可运行的机制很好-调用了syncData()
,并且在日志"sync before"
中看到了消息,但没有看到"sync WHOLE DATA"
。我确实尝试放置一个断点-它显示检查(因为它在那里,但是调试器从未真正停止该点)。我可以看到网络请求已执行,但未成功。这是为什么?如果我正常调用相同的函数(不是从runnable调用的),则可以正常工作。
答案 0 :(得分:0)
您的syncData
函数返回Single
对象。您应该通过
DummyService.syncData(context, null).subscribe(response -> {
})