RxJava的初步认识

来源:互联网 发布:锐捷云课堂安装软件 编辑:程序博客网 时间:2024/06/15 06:06

摘自http://www.jianshu.com/p/19cac3c5b106 谢谢他

观察者模式
首先要先介绍一下观察者模式(可能比喻的不够恰当,意思到了就好);

观察者:监视着被观察者的行为,当被观察者某个状态改变的时候会通知观察者,观察者会执行对应的操作;
被观察者:被监视的对象,当某个状态改变的时候会通知观察者;
订阅(或注册):将观察者和被观察者建立联系。
(很乱?来个栗子?)
这里举一个我个常用的例子,点击Button后触发OnClickListener
中的onClick()事件。在这个事件中他们的角色分别如下:

观察者:OnClickListener;
被观察者:Button;
订阅(或注册):setOnClickListener()。

RxJava
在上面介绍了观察者模式,这里也将RxJava中的三个角色进行一下角色分配

观察者:Observer;
被观察者:Observable;
订阅(或注册):subscribe()。

这里写图片描述
这里写图片描述
这里写图片描述

代码实现:

package com.example.rxjava;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import java.util.ArrayList;import java.util.List;import rx.Observable;import rx.Observer;import rx.Subscriber;public class MainActivity extends AppCompatActivity {    String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //创建一个观察者        Observer<String> observer = new Observer<String>() {            @Override            public void onCompleted() {                Log.i(TAG, "Completed");            }            @Override            public void onError(Throwable e) {                Log.i(TAG, "Error");            }            @Override            public void onNext(String s) {                Log.i(TAG, s);            }        };        //使用Observable.create()创建被观察者        Observable observable1 = Observable.create(new Observable.OnSubscribe<String>() {            @Override            public void call(Subscriber<? super String> subscriber) {                subscriber.onNext("Hello");                subscriber.onNext("Wrold");                subscriber.onCompleted();            }        });        List<String> list = new ArrayList<String>();//创建被观察者的简化方法        list.add("Hellow");        list.add("Wrold");        Observable observable2 = Observable.from(list);        //订阅        observable1.subscribe(observer);        observable2.subscribe(observer);    }}
0 0
原创粉丝点击