Android基础知识Android开发Android,如何在代码中获取attr属性的值

在rxJava中使用just操作符时遇到的坑

2016-04-07  本文已影响1125人  anTttt
错误代码
Observable
         .just(initValues()) 
         .subscribeOn(Schedulers.io())   
         .observeOn(AndroidSchedulers.mainThread())
         .subscribe(values -> doSomething());

我的需求是调用initValues()方法从数据库加载一些数据,在io线程执行,然后在mainThread订阅结果,但是这样写并不能实现我的需求。

原因

因为just()from()这类能够创建Observable的操作符在创建之初,就已经存储了对象的值,而不是在被订阅的时候才创建。所以在我们订阅之前,initValues()方法就已经在开始执行了,这样就不能达到我们想要的效果。

解决方法

用create()操作符。

Observable
       .create(subscriber ->
                XXObject values = initValues();
                subscriber.onNext(values);
        )
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(values -> doSomething());
上一篇下一篇

猜你喜欢

热点阅读