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

Using rxjava I can't get retrofit off the main thread

简化代码如下,s是匹配我端点return类型的订阅者。无论我做什么,我都会在主线程异常上得到一个网络。有些教程甚至没有在这里提到线程,说当你使用 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);

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

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

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

原来我使用的是旧版本的 Retrofit,当我切换到新版本后它就开始正常工作了。