码迷,mamicode.com
首页 > 编程语言 > 详细

rxjava2学习笔记(1)

时间:2017-04-06 19:52:06      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:概念   入门   hello   https   blog   地址   world   表示   逻辑   

1.什么是RxJava?

  简单,清晰的多线程编程框架.可方便的写出维护性高,逻辑清晰的Java程序.

2.什么是观察者模式?

  入门教程讲这种高大上抽象概念都是耍流氓!

3.开始

  3.1github地址

    https://github.com/ReactiveX/RxJava

    https://github.com/ReactiveX/RxAndroid

  3.2添加依赖:

    compile ‘io.reactivex.rxjava2:rxandroid:2.0.1‘

    compile ‘io.reactivex.rxjava2:rxjava:2.0.8‘

 

    以上是rxjava的最新版本.

4.helloworld程序

 

public class MainActivity extends AppCompatActivity {
    private static final String TAG  = "MainActivity";
    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Observable.create(new ObservableOnSubscribe<Integer>(){
            @Override
            public void subscribe(@NonNull ObservableEmitter<Integer> e) throws Exception {
                int i = 0;
                while(i < 5) {
                    e.onNext(i++);
                    Log.i(TAG, "subscribe: "+i);
                }
                e.onComplete();
//                e.onError(new Throwable("onError"));
                while(i < 10) {
                    e.onNext(i++);
                    Log.i(TAG, "subscribe: "+i);
                }


            }
        }).subscribe(new Observer<Integer>(){
            @Override
            public void onSubscribe(Disposable d) {
                Log.i(TAG, "onSubscribe: ");
            }

            @Override
            public void onNext(Integer integer) {
                Log.i(TAG, "onNext: " + integer);
            }

            @Override
            public void onError(Throwable e) {
                Log.i(TAG, "onError: ");
            }

            @Override
            public void onComplete() {
                Log.i(TAG, "onComplete: ");
            }
        });

    }
}

 

log如下:

技术分享

 

 

5.RxJava原理

 技术分享

  Observable相当于产生事件的上流红色水管,

  Observer是接受事件的下流绿色水管.

通过subscribe()方法,将两者关联起来,Observer(绿色水管)便可以接受Observable(红色水管)发送过来的事件,进行相应的逻辑处理.

 

5.1 源码分析

从log可分析出:

1.两个水管通过subscribe()建立连接后,onSubscribe()方法在第一个执行,执行完成后,才进行发送数据.

2.在执行完onComplete()(或者onError())后,上流水管继续发送事件,但下流水管不在接受事件. 

 5.2 说明

    5.2.1 subscribe()方法

技术分享

该方法接受Observer参数,上面已经用过了.

其他参数,如Consumer<> onNext表示下流水管只关心onNext()事件,其他事件不去处理,多个参数同理.

 

6.入门结束.下篇文章继续

rxjava2学习笔记(1)

标签:概念   入门   hello   https   blog   地址   world   表示   逻辑   

原文地址:http://www.cnblogs.com/newjeremy/p/6674693.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!