使用rxjava我无法从主线程中进行改进

时间:2015-07-17 08:18:38

标签: android retrofit rx-java

简化代码如下,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);

我也尝试过没有订阅线程。我每次都在主线程异常上获得网络。

2 个答案:

答案 0 :(得分:5)

您应该在主线程中observeOn,在新线程上subscribe

p.getFeedForUser()
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.newThread())
    .subscribe(s);

答案 1 :(得分:1)

原来我使用旧版本的Retrofit,只要我切换到更新的版本就开始正常工作。