zoukankan      html  css  js  c++  java
  • 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+"");
                       }
                   });
                }
            });

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

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

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

     .subscribeOn(AndroidSchedulers.mainThread())

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

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

      .observeOn(AndroidSchedulers.mainThread())
    关注我
  • 相关阅读:
    Java操作Redis的方式
    Redis综述
    KafKa综述
    NuxtJS项目——状态树
    NuxtJS项目——开发工具
    NuxtJS项目——命令和部署
    NuxtJS项目——模块
    NuxtJS项目——插件
    NuxtJS项目——资源文件
    Sampling Matrix
  • 原文地址:https://www.cnblogs.com/zengmianhui/p/12634074.html
Copyright © 2011-2022 走看看