我是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);
```
它不会导致任何崩溃,但我无法获得任何输出,任何人都知道如何解决它?非常感谢你。
答案 0 :(得分:1)
您似乎没有对结果做任何事情或更新您的用户界面,这会导致您看不到任何结果。你的RX代码的组成看起来相当不错,所以我相信这就是原因。
Rx-Android在很大程度上已经被用于RX-Binding,所以你应该使用它。
我自己正在努力用自己的界面填充列表视图:
AsyncTask replacement with RXJava help needed
你正在做的事情看起来不错,但你可以简化它