我需要从类B中的方法C返回一个值。
我希望我的代码像这样处理:1 - 2 - 3 - 4 - 5
但它的处理方式是:1-4-5-2-3
(如您所见,我在代码中添加了一些日志。)
我已经处理这个问题一个多星期了,但我找不到问题。
我在这个问题中删除了一些无用的代码。
问题是什么?我如何解决这个问题?
我重写了这篇文章,因为有人说我把代码缩短得太多了。
希望足够了!
提前谢谢你!
Class A
public class a() {
public void checkConnectivity(Context context) {
this.context = context;
myObservable.subscribe(mySubscriber);
}
private Observable<Integer> myObservable = Observable.create(
new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super Integer> sub) {
Log.d("1", "1");
int connType = cc.getConnectionStatus(context);
sub.onNext(connType);
sub.onCompleted();
}
}
);
private Subscriber<Integer> mySubscriber = new Subscriber<Integer>() {
@Override
public void onNext(Integer connType) {
int code = c.getcode();
Log.d("4", "4");
textView.setText("code : " + code);
}
@Override
public void onCompleted() {
Log.d("5", "5");
}
@Override
public void onError(Throwable e) {
Log.d("-- NetPresenter", "onError");
}
};
}
Class C
public class C() {
public int getcode() {
observable
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<Response<ResponseBody>>() {
public void onCompleted() {
Log.d("3", "3");
}
public void onError(Throwable e) {
code = 0;
}
public void onNext(Response<ResponseBody> response) {
code = 1;
Log.d("2", "2");
}
});
return code;
}
}
首先,如果没有其他指定,RxJava在默认情况下是同步的。这两条线
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
使您的c.getcode()调用异步。如果你去掉这些线,你就会得到你所需要的。我自己检查过了。
P、 请注意,文本视图。setText(“代码:”代码) 可能引发异常(如果您不是从UI线程启动整个链)。因此,您需要找到在UI线程中运行此代码的变通方法(带有Looper.getMainLooper()的处理程序可能会有所帮助)。
Upd 1。尝试postById。execute()在同一线程中运行请求。只有在同一线程中进行所有调用,才能实现目标<代码>postById。排队初始化异步调用。所以你又把它弄坏了。
问题内容: 我正在使用具有以下签名的类: 我正试图通过其他班级来称呼它: 但是在这里我得到这个错误: 为什么在Class扩展行中将我指定为第三个参数? 问题答案: 您可以通过对返回的AsyncTask调用AsyhncTask的get()方法来获得结果,但是当它等待获取结果时,它将把它从异步任务变成同步任务。 由于您的AsyncTask位于单独的类中,因此您可以创建一个接口类并在AsyncTask中
1.API 返回结构 返回结果(response)分为:状态码(status code)、头部(headers)、消息体(body)。其中算法的结果会以 JSON 格式放在消息体中。 如何从 HTTP 返回中分别获取这三部分信息,请参见所用 HTTP 库的文档。 解析 JSON 格式需要寻找所用语言的 JSON 库,参见 http://www.json.org/ 2.正常结果 状态码为 2xx的为
问题内容: 因此,我编写了一个小脚本来从网站下载图片。它通过7个字母字符值,其中第一个字符始终是数字。问题是,如果我想停止脚本并再次启动它,则必须重新开始。 我可以用我获得的最后一个值以某种方式播种itertools.product,这样我就不必再遍历它们。 感谢您的任何投入。 这是代码的一部分: 问题答案: 这是一个基于pypy库代码的解决方案(感谢agf在评论中的建议)。 状态可以通过属性获得
本文向大家介绍python 处理telnet返回的More,以及get想要的那个参数方法,包括了python 处理telnet返回的More,以及get想要的那个参数方法的使用技巧和注意事项,需要的朋友参考一下 问题: 需要循环获取网元返回的某个参数,并计算出平均值。 解决方案: 通过expect解决返回More的问题。 通过具体的参数位置,精确获取到参数。 讨论: 参数位置固定,不好复用。 以上
问题内容: 我在Utilities类中使用loadImage方法,并且在通过闭包返回图像时遇到了一些麻烦。基本上因为我的代码可能返回图像或错误,所以在调用该方法时将其分配给image属性是行不通的。 我在类的方法声明中使用的方法是否错误,还是应该以不同的方式调用该方法以预期潜在的不同结果?谢谢 问题答案: 将处理程序添加到您的 loadImage 函数中: 迅捷3 像这样调用func: 斯威夫特2
Android Kotlin,<代码>api。openOrder返回类型为BaseResponse 我想要的代码是,如果配置文件。值不为null,API返回BaseResponse 但android studio提示,这种有趣的返回类型是任何,如何修复? 排除if-else用法,因为配置文件。值具有许多属性,并且具有配置文件。价值用户名,