【问题标题】:how to convert AsyncTask to RxAndroid如何将 AsyncTask 转换为 RxAndroid
【发布时间】:2015-11-02 13:30:02
【问题描述】:

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

```

它没有导致任何崩溃,但我无法获得任何输出,有人知道如何解决吗?非常感谢。

【问题讨论】:

  • 你有输出吗?尝试添加一些日志记录,并阅读以下内容:stackoverflow.com/help/mcve。在这个问题的当前状态下,很难猜出你的错误在哪里。

标签: android android-asynctask rx-java rx-android


【解决方案1】:

您实际上并未对结果执行任何操作或更新 UI,这会导致您看不到任何结果。您的 RX 代码的组成看起来相当不错,所以我相信这就是原因。

Rx-Android 已在很大程度上被纳入 RX-Binding,因此您应该改用它。

我自己只是在做这个,用我的休息界面的结果填充一个列表视图:

AsyncTask replacement with RXJava help needed

你所做的看起来不错,但你可以简化它

【讨论】:

  • 谢谢,我做了一些测试,好像在in = new URL(s).openStream();之后线程停止,之后我无能为力
猜你喜欢
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多