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

摘要:
Observable.create(newObservable.OnSubscribe<Integer>(){@Overridepublicvoidcall(Subscriber<?superInteger>Subscriber){for(inti=0;i<10;i++){Subscriber.onNext(i);}Subscriber.onCompleted();}})。订阅(
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())

免责声明:文章转载自《AndroidSchedulers.mainThread()无法切换到主线程,原来是细节问题啊》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python获取知乎日报另存为txt文件英特尔® 实感™ 前置摄像头 SR300 和 F200 的比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

008-多线程-基础-ThreadGroup线程组

线程组ThreadGroup表示一组线程的集合,一旦一个线程归属到一个线程组之中后,就不能再更换其所在的线程组。那么为什么要使用线程组呢?个人认为有以下的好处:方便统一管理,线程组可以进行复制,快速定位到一个线程,统一进行异常设置等。ThreadGroup它其实并不属于Java并发包中的内容,它是java.lang中的内容。但是掌握对其的于理解,在实际应用...

2个线程 循环打印ababab...

第一种方式: package mianshi.Thread; /** * 2个线程 循环打印 abab * 实现1: * note: 2个线程操作 Work类, work类里面 实现互斥的 2个打印方法 A B。 2个线程各自调用A,B */ public class ThreadA { public static void main(...

Run Loop

学习过程中,将Threading PG中的Run Loops翻译了下,权当是做为笔记。原文见 Run Loops。 20110526 转载请注明,谢谢。 http://www.cnblogs.com/scorpiozj/ Run loops是线程的基础架构部分。一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件。使用run loo...

net 异步与同步

一、摘论  为什么不是摘要呢?其实这个是我个人的想法,其实很多人在谈论异步与同步的时候都忽略了,同步异步不是软件的原理,其本身是计算机的原理及概念,这里就不过多的阐述计算机原理了。在学习同步与异步之前,我们需要先研究几个问题 在说到异步前,先来理一下几个容易混淆的概念,并行、多线程、异步。     并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这...

Wpf杀死所有线程、Wpf关闭程序杀死所有线程

Wpf关闭程序杀死所有线程: Process.GetCurrentProcess().Kill(); using System.Diagnostics; private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { Process.Get...

Android Runnable 运行在那个线程

Runnable 并不一定是新开一个线程,比如下面的调用方法就是运行在UI主线程中的: Handler mHandler=new Handler(); mHandler.post(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub }...