2015-11-02 83 views
1

我是新來rxandroid,現在我想用rxandroid與停止使用的AsyncTask訪問互聯網,我下面寫如何轉換的AsyncTask到RxAndroid

```

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

你有什麼輸出?嘗試添加一些日誌記錄,並閱讀以下內容:http://stackoverflow.com/help/mcve。在這個問題的當前狀態中,很難猜測你的錯誤在哪裏。 – Jaap

回答

1

看來你並沒有對結果做任何事情或更新你的UI,這會導致你看不到任何結果。你的RX碼的組成看起來相當不錯,所以我相信這就是爲什麼。

Rx-Android已經在很大程度上被推入到RX綁定中,因此您應該使用它。

我只是在做這個我自己從我的REST接口填充結果列表視圖:

AsyncTask replacement with RXJava help needed

你在做什麼看起來不錯,但你可以把它簡化

+0

謝謝,我已經做了一些測試,看來在in = new URL(s).openStream()後,線程停止後,我無能爲力 – jfxu