RxJava1.0的创建

来源:互联网 发布:局域网视频软件 编辑:程序博客网 时间:2024/06/05 18:44
RxJava1.0的依赖
compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'
package com.example.rxjava10;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.Toast;import rx.Observable;import rx.Observer;import rx.Subscriber;import rx.functions.Action0;import rx.functions.Action1;import rx.functions.Func1;import rx.schedulers.Schedulers;/** * // 1.RxJava观察者模式 * // 2.链式调用 * // 3.非常灵活的线程调度,异步任务框架 * // 4.灵活的操作符 */public class MainActivity extends AppCompatActivity implements View.OnClickListener {    // 被观察者创建的3种方式    private Button btnJust;    private Button btnFrom;    private Button btnCreate;    // 观察者创建的方式    private Button btnObserver;    private Button btnSubscribe;    private Button btnAction0;    private Button btnAction1;    private Button btnAction2;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 被观察者        btnJust = (Button) findViewById(R.id.btn_rx_just);        btnFrom = (Button) findViewById(R.id.btn_rx_from);        btnCreate = (Button) findViewById(R.id.btn_rx_create);        btnJust.setOnClickListener(this);        btnFrom.setOnClickListener(this);        btnCreate.setOnClickListener(this);        //观察者        btnObserver = (Button) findViewById(R.id.btn_rx_observer);        btnSubscribe = (Button) findViewById(R.id.btn_rx_subscriber);        btnAction0 = (Button) findViewById(R.id.btn_rx_action0);        btnAction1 = (Button) findViewById(R.id.btn_rx_action1);        btnAction2 = (Button) findViewById(R.id.btn_rx_action2);        btnObserver.setOnClickListener(this);        btnSubscribe.setOnClickListener(this);        btnAction0.setOnClickListener(this);        btnAction1.setOnClickListener(this);        btnAction2.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()){            // 被观察者创建            case R.id.btn_rx_just:                Observable observable1 = Observable.just(1, 2, 3, 4);                break;            case R.id.btn_rx_from:                String[] strs={"陈德敏","柴晓凯","杨栓","马悦"};                Observable observable2 = Observable.from(strs);                break;            case R.id.btn_rx_create:                Observable observable3= Observable.create(new Observable.OnSubscribe<String>() {                    @Override                    public void call(Subscriber<? super String> subscriber) {                        subscriber.onNext("Hello");                        subscriber.onNext("Word");                        subscriber.onNext("Java");                    }                });                break;            //观察者创建            case R.id.btn_rx_observer:                Observable observable4 = Observable.just(1, 2, 3, 4);                Subscriber<Integer> subscriber = new Subscriber<Integer>() {                    //新增一个onstart方法                    @Override                    public void onStart() {                        super.onStart();                    }                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(Integer integer) {                        Toast.makeText(MainActivity.this,"onNext: " + integer,Toast.LENGTH_SHORT).show();                    }                };                //订阅事件  语法上是被观察者订阅观察者,实际上是观察者订阅被观察者,为了方便语法上的链式调用                observable4.subscribe(subscriber);                break;            case R.id.btn_rx_subscriber:                Observable<Integer> observable5 = Observable.just(1, 2, 3, 4);                Observer<Integer> observer = new Observer<Integer>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(Integer integer) {                        Toast.makeText(MainActivity.this,"onNext: " + integer,Toast.LENGTH_SHORT).show();                    }                };                observable5.subscribe(observer);                break;            case R.id.btn_rx_action0:                // 观察者第三种创建方式                Observable<Integer> observable6 = Observable.just(1, 2, 3, 4);                Action1<Integer> integerAction1 = new Action1<Integer>(){                    @Override                    public void call(Integer integer) {                        Toast.makeText(MainActivity.this,"onNext: " + integer,Toast.LENGTH_SHORT).show();                    }                };                observable6.subscribe(integerAction1);                break;            case R.id.btn_rx_action1:                // 闭包                Observable<Integer> observable7 = Observable.create(new Observable.OnSubscribe<Integer>() {                    @Override                    public void call(Subscriber<? super Integer> subscriber) {                        subscriber.onNext(1);                        subscriber.onNext(2);                        subscriber.onNext(3);                        subscriber.onNext(4);                        subscriber.onError(new Throwable("这是一条错误信息"));                    }                });                Action1<Integer> action1 = new Action1<Integer>() {                    @Override                    public void call(Integer integer) {                        Log.e("TAG", "call: " + integer);                    }                };                Action1<Throwable> action2 = new Action1<Throwable>() {                    @Override                    public void call(Throwable o) {                        Log.e("TAG", "call: " + o.getMessage());                    }                };                observable7.subscribe(action1, action2);                break;            case R.id.btn_rx_action2:                Observable<Integer> observable8 = Observable.create(new Observable.OnSubscribe<Integer>() {                    @Override                    public void call(Subscriber<? super Integer> subscriber) {                        subscriber.onNext(1);                        subscriber.onNext(2);                        subscriber.onNext(3);                        subscriber.onNext(4);                        // onCompleted和onError只能执行一个                        subscriber.onCompleted();//                        subscriber.onError(new Throwable("这是一条错误信息"));                    }                });                Action1<Integer> action21 = new Action1<Integer>() {                    @Override                    public void call(Integer integer) {                        Log.i("tag", "call: " + integer);                    }                };                Action1<Throwable> action22 = new Action1<Throwable>() {                    @Override                    public void call(Throwable throwable) {                        Log.e("tag", "call: " + throwable.getMessage());                    }                };//                subscriber.onCompleted();在这里调用                Action0 action20 = new Action0() {                    @Override                    public void call() {                        Log.i("tag", "call: onComplete");                    }                };                observable8.subscribe(action21, action22, action20);                break;        }    }}