简体   繁体   English

如何将AsyncTask转换为RxAndroid

[英]how to convert AsyncTask to RxAndroid

I am new to rxandroid, now I want to use rxandroid to access internet with out use AsyncTask, I have write some code below 我是rxandroid的新手,现在我想使用rxandroid来访问Internet,而无需使用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);

``` ```

It haven't cause any crash, but I can not get any output, anyone know how to solve it? 它没有导致任何崩溃,但是我无法获得任何输出,有人知道如何解决吗? Thank you very much. 非常感谢你。

It does not appear that you actually do anything with your results or update your UI, which would cause you not to see any results. 看来您实际上并没有对结果做任何事情或更新您的UI,这不会导致您看不到任何结果。 The composition of your RX code looks pretty decent, so I believe that this is why. RX代码的组成看起来相当不错,所以我相信这就是原因。

Rx-Android has largely since been rolled into RX-Binding so you should use that instead. Rx-Android在很大程度上已被引入RX-Binding中,因此您应该改用它。

I just was working on this myself to populate a listview with results from my rest interface: 我只是自己进行这项工作,以用我的其余界面的结果填充列表视图:

AsyncTask replacement with RXJava help needed 需要使用RXJava替换AsyncTask

What you're doing looks good but you can simplify it 您正在做的事情看起来不错,但是您可以简化它

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM