当前位置:   article > 正文

AndroidSchedulers.mainThread()无法切换到主线程,原来是细节问题啊_subscribeon(androidschedulers.mainthread())

subscribeon(androidschedulers.mainthread())
Observable.create(new Observable.OnSubscribe<Integer>() {
                   @Override
                   public void call(Subscriber<? super Integer> subscriber) {
                        for (int i=0;i<10;i++){
                            subscriber.onNext(i);
                        }
                       subscriber.onCompleted();
                   }
               })
                       .subscribeOn(Schedulers.io())
                       .subscribeOn(AndroidSchedulers.mainThread())//这里原来是要切换到主线程运行的
                       .subscribe(new Observer<Integer>() {
                   @Override
                   public void onCompleted() {
                       Log.i(MainActivity.class.getSimpleName(),"onCompleted");
                   }

                   @Override
                   public void onError(Throwable e) {
                       Log.i(MainActivity.class.getSimpleName(),"onError");
                   }

                   @Override
                   public void onNext(Integer i) {
                       Log.i(MainActivity.class.getSimpleName(),i+"");
                   }
               });
            }
        });
  • 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

上面这段代码一直报,只有主线程才能更新View

Only the original thread that created a view hierarchy can touch its views.

可能 有人发现了错误,细节啊

 .subscribeOn(AndroidSchedulers.mainThread())
  • 1

上面的这段代码“subscribeOn()”这个方法是设定Observable所在线程,所以,是将Observable切换到主线程了

正确的应该是调用”observeOn()”方法

  .observeOn(AndroidSchedulers.mainThread())
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/251073
推荐阅读
相关标签
  

闽ICP备14008679号