簡體   English   中英

如何將AsyncTask轉換為RxAndroid

[英]how to convert AsyncTask to RxAndroid

我是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);

```

它沒有導致任何崩潰,但是我無法獲得任何輸出,有人知道如何解決嗎? 非常感謝你。

看來您實際上並沒有對結果做任何事情或更新您的UI,這不會導致您看不到任何結果。 RX代碼的組成看起來相當不錯,所以我相信這就是原因。

Rx-Android在很大程度上已被引入RX-Binding中,因此您應該改用它。

我只是自己進行這項工作,以用我的其余界面的結果填充列表視圖:

需要使用RXJava替換AsyncTask

您正在做的事情看起來不錯,但是您可以簡化它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM