使用 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,当我切换到新版本后它就开始正常工作了。
简化代码如下,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,当我切换到新版本后它就开始正常工作了。