RxJava初探

前言

优秀文章推荐

深入浅出RxJava(一:基础篇)

基础知识

掌握 Java 8 Lambda 表达式
http://geek.csdn.net/user/publishlist/icess

http://blog.chinaunix.net/uid-20771867-id-5187376.html

http://akarnokd.blogspot.hu/2015/05/operator-concurrency-primitives_86.html

http://blog.danlew.net/2015/07/23/deferring-observable-code-until-subscription-in-rxjava/

其实最好的学习方法,还是阅读源码,RTFSC你懂得!!!
这里推荐一个Demo:
https://github.com/Chaoba/RxJavaDemo推荐这个demo,并不是因为它很牛X,而是因为它对Rxjava的演示比较全面。里面有一些瑕疵,你可以举一反三的修正过来!当然,clone下来代码后,不仅要看,还要不断的修改测试,达到深入理解的目的!Rxjava的大多数优秀的教程都是英文版的,对于英文不是很好的童鞋,RTFSC是很好的快速的学习Rxjava的方式。

使用RxAndroid的一点体会

最近一个项目,引用了一个第三方的支付,需要向该支付传一个回调,我在回调里做了一些处理。但是就奇了怪了吐司总是吐不出,Ui(Dialog无法取消),很无奈啊。。。最后才搞明白,这个回调是在子线程中执行的。你说,生气不生气?无奈的很,不得不创建一个handler,例如:

    Handler handler = new Handler(context.getMainLooper()) {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
            }
    }

最后再在这个回调里面发送handler消息。不过加入有了RxJava,又会是怎样的一种场景呢?
在回调里面只需执行,同时你也不用担心该回调在哪个线程执行:


Observable.just(arg0).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        Toast.makeText(mContext, "成功了", Toast.LENGTH_SHORT).show();
                    }
                });

是不是很霸气的感觉?如果用上java8支持的Lambda变成界面更加清爽。不是说RxJava具有其他知识无法完成的工作,只是说它提高了开发的效率。这一点很赞!

怎样学习Rxjava

对于Reactive 的学习,主要的是对其思想的理解,其次重点是其操作符的学习。对其思想的理解,只能软磨硬泡,不是短期就能促成的,对操作符的理解,重点在于实践。
关于操作符的官方文档
对于你应该选择什么样的操作符,这里翻译一下官方的文档,我觉得写得比较不错:

主要的操作符学习

先来表述一下用于描述操作符的图:

用于创建Observable的操作符

*create:创建一个新的Observable,并会擦除数据流之前的数据。
例如:你使用just创建了一个Observable之后又链式调用create这是just的数据流会被擦除。
range操作符:用于创建数据流为一个范围的Observable例如:

Observable.range(10, 5);//这是数据流为10,11,12,13,14,用于返回一段连续的整数

just:其实质还是调用from的迭代创建Observable;
defer相对于just,defer会为每一个订阅者创建一个全新的Observable,且在被订阅后才会为其创建Observable。这是一个很实用的操作符。一个经典案例:Deferring Observable code until subscription in RxJava

repeat:重复Observable的item并返回
形象图:

Observable的衍生品Single

相比于Observable处理的onNext,onError,onComplete,Single就相对的简单了一些,只有onSuccess()和onError()

Observable线程规划者Scheduler

Observable可以通过Scheduler自由的切换线程。你可以自定义线程,也可以使用Schedulers预先定义好的几个线程,例如INSTANCE.ioScheduler,TestScheduler,INSTANCE.computationScheduler,另外RxAndroid还特别提供了AndroidSchedulers.mainThread()。对于Observable创建的过程的线程可以通过subscribeOn()进行指定,可以通过observeOn()来指定操作符发送消息的进程。官方给出的图解:
这里写图片描述

关于上图的说明:
其中subscribeOn可以出现在链式表达式的任何地方,用于制定Observable的创建过程。而observeOn指定了下一个操作符执行的线程。如果某一个操作符没有指定线程,则默认向前寻找。
其中①是Observable的创建过程,由subscribeOn指定。而②的线程由第1个observeOn指定。由于没有对③进行指定,因此默认向前寻找,即在同线程②。④同③。而⑤由第2个observeOn指定。

——————————————————-

文章有点乱,待整理完善!!!
未完待续……

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值