简化代码如下,s是与我的终点的返回类型匹配的订阅者。无论我做什么,我都会在主线程异常上获得一个网络。有些教程甚至没有在这里提到线程,说当你使用rxjava时,retrofit会自动处理它,但事情似乎对我来说是另一回事,我似乎无法将它从主线程中解脱出来。
PostInterface p = getRestAdapter().create(PostInterface.class);
p.getFeedForUser()
.observeOn(Schedulers.newThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(s);
编辑:
我也试过这段代码(发布在下面):
p.getFeedForUser()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(s);
我也尝试过没有订阅线程。我每次都在主线程异常上获得网络。
答案 0 :(得分:5)
您应该在主线程中observeOn
,在新线程上subscribe
p.getFeedForUser()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(s);
答案 1 :(得分:1)
原来我使用旧版本的Retrofit,只要我切换到更新的版本就开始正常工作。