Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用rxjava,我可以';t将改装件从主螺纹上拆下_Android_Retrofit_Rx Java - Fatal编程技术网

Android 使用rxjava,我可以';t将改装件从主螺纹上拆下

Android 使用rxjava,我可以';t将改装件从主螺纹上拆下,android,retrofit,rx-java,Android,Retrofit,Rx Java,下面是简化代码,s是与我的端点的返回类型匹配的订户。无论我做什么,我都会得到一个主线程上的网络异常。有些教程甚至没有提到线程,说改型会在使用rxjava时自动处理它,但对我来说,事情似乎正朝着另一个方向发展,我似乎无法让它脱离主线程 PostInterface p = getRestAdapter().create(PostInterface.class); p.getFeedForUser() .observeOn(Schedulers.newThread()) .subsc

下面是简化代码,s是与我的端点的返回类型匹配的订户。无论我做什么,我都会得到一个主线程上的网络异常。有些教程甚至没有提到线程,说改型会在使用rxjava时自动处理它,但对我来说,事情似乎正朝着另一个方向发展,我似乎无法让它脱离主线程

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);

原来我使用的是旧版本的改装,我一切换到新版本它就开始正常工作。

原来我使用的是旧版本的改装,我一切换到新版本它就开始正常工作。

而且,您可以跳过订阅,因为这是改型默认的功能。@david.mihola,谢谢您的回复。如果可能的话,你能给我一个链接,当我可以阅读它吗?因为我在某个地方读到了改装add
subscribeOn(Schedulers.io())
,但可能是我错了,有趣的是,我在官方文档中找不到它。但是我已经在没有订阅的情况下对Rx进行了改装(Schedulers.io())一段时间了,没有任何问题。还有Jake Wharton的示例应用程序,他也是这样做的:改造默认情况下不使用任何subscribeOn,它使用其内部调度程序来执行请求,但不是通过Rx subscribeOn方法完成的,对此也不是100%确定,但是这种行为在将来可能会改变,所以我无论如何都会使用subscribeOn。我更改了此代码,但仍然会得到主线程上的网络异常。而且,您可以跳过
subscribeOn
,因为这是改型默认的功能。@david.mihola,谢谢您的回复。如果可能的话,你能给我一个链接,当我可以阅读它吗?因为我在某个地方读到了改装add
subscribeOn(Schedulers.io())
,但可能是我错了,有趣的是,我在官方文档中找不到它。但是我已经在没有订阅的情况下对Rx进行了改装(Schedulers.io())一段时间了,没有任何问题。还有Jake Wharton的示例应用程序,他也是这样做的:改造默认情况下不使用任何subscribeOn,它使用其内部调度程序来执行请求,但不是通过Rx subscribeOn方法完成的,对此也不是100%确定,但是这种行为在将来可能会改变,所以我无论如何都会使用subscribeOn。我修改了这段代码,但仍然得到了主线程上的networking异常。