gpt4 book ai didi

android - 如何将 AsyncTask 转换为 RxAndroid

转载 作者:行者123 更新时间:2023-11-30 01:47:41 25 4
gpt4 key购买 nike

我是 rxandroid 的新手,现在我想使用 rxandroid 访问互联网而不使用 AsyncTask,我在下面写了一些代码

```

 Observable<String> o= Observable.create(new Observable.OnSubscribe<String>() {

@Override
public void call(Subscriber<? super String> sub) {
sub.onNext("http://192.168.191.1/test3.html");//The test url in my computer ,it works ok;
}
});
Subscriber<String> mySubscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
InputStream in = null;
try {
in = new URL(s).openStream();
} catch (IOException e) {
e.printStackTrace();
}
Reader r = null;
try {
r = new InputStreamReader(in, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
char[] buffer = new char[8000];
try {
r.read(buffer);
} catch (IOException e) {
e.printStackTrace();
}
Log.d("AAA", new String(buffer));
}

@Override
public void onCompleted() { }

@Override
public void onError(Throwable e) { }
};
o.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(mySubscriber);

```

它没有导致任何崩溃,但我无法得到任何输出,有人知道如何解决吗?非常感谢。

最佳答案

您实际上并未对结果执行任何操作或更新您的用户界面,这会导致您看不到任何结果。您的 RX 代码的组成看起来相当不错,所以我相信这就是原因。

Rx-Android 很大程度上已被整合到 RX-Binding 中,因此您应该改用它。

我自己正在做这个,用我的休息界面的结果填充一个 ListView :

AsyncTask replacement with RXJava help needed

你所做的看起来不错,但你可以简化它

关于android - 如何将 AsyncTask 转换为 RxAndroid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33478749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com