rxjava 学习1

第一天

初学rxjava,哪里写得不好的大家多多指教!


依赖导入

github rxjava
可以打出特别漂亮的日志的框架,额外推荐 logger

dependencies {
……
//rxjava
compile ‘io.reactivex:rxandroid:1.2.1’
compile ‘io.reactivex:rxjava:1.1.6’
//logger
compile ‘com.orhanobut:logger:1.15’
}

小试牛刀

 public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        // 通过create方法创建可观察对象(observable)
        Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> subscriber) {
                //通过subscribeOn(Schedulers.io()) 来设置订阅线程

                //通过调用onNext()方法向主线程传输工作结果
                subscriber.onNext("s");
            }
        });
        //进行订阅(subscriber)
        observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<String>() {
            @Override
            public void onCompleted() {
                //通过observeOn(AndroidSchedulers.mainThread()) 来设置观察线程

            }

            @Override
            public void onError(Throwable e) {
                //通过observeOn(AndroidSchedulers.mainThread()) 来设置观察线程

            }

            @Override
            public void onNext(String s) {
                //通过observeOn(AndroidSchedulers.mainThread()) 来设置观察线程

                Logger.i("next");

            }
        });
        //Schedulers.io()为子线程
        //ndroidSchedulers.mainThread()为主线程



    }
}

解决问题

在android开发过程中我们经常会涉及到主线程工作线程的切换,或者是说当我们在子线程做完某项事情后需要通知主线程,以前涉及到用handler或者异步任务,写起来相对繁琐这里我们可以比较快捷的实现。

通过
observable.subscribeOn(Schedulers.io())来确定call()方法在子线程执行
通过
observable.observeOn(AndroidSchedulers.mainThread()) 来确定onError()、onNext()、onCompleted()主线程执行

注意事项

  • 若不设置线程默认都是在主线程中执行。
  • 仅仅创建了observable对象是不会执行任何的代码的,只有订阅后才会调用call()方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值