how to convert AsyncTask to RxAndroid
我是 rxandroid 新手,现在我想使用 rxandroid 访问互联网而不使用 AsyncTask,我在下面写了一些代码
```
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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); |
```
它没有导致任何崩溃,但我无法得到任何输出,有人知道如何解决吗?非常感谢。
您实际上并未对结果执行任何操作或更新 UI,这会导致您看不到任何结果。您的 RX 代码的组成看起来相当不错,所以我相信这就是原因。
Rx-Android 已经在很大程度上被引入到 RX-Binding 中,所以你应该使用它。
我自己只是在做这个,用我的rest界面的结果填充一个列表视图:
需要 RXJava 帮助替换 AsyncTask
你所做的看起来不错,但你可以简化它