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; } }}
阅读全文
0 0
- RxJava1.0的创建
- RxJava1.0的RxBus使用
- RxJava1.0 flatMap方法的源码分析
- Rxjava1.0 lift方法
- RxJava1.0详细介绍
- rxjava1
- Rxjava1
- 对Rxjava1.0的map方法的源码分析
- Retorfit2.0+Rxjava1+Okhttp3实现soap协议的Webservice
- android RXJava入门(Rxjava1.0)
- RxJava1.0+Retrofit结合使用
- RxJava2与RxJava1的简单对比
- 1. RxJava1.x的诞生(非常重要)
- 3.RxJava2.x与RxJava1.x的差异对比
- RxJava使用简史(一)RxJava1的回顾
- RxJava2系列之相较RxJava1的更新之处(二)
- retrofit2+rxjava1的相关用法(总结篇)
- Rxjava1初识
- iOS p12证书转换成pem证书
- windows编程一日一练(3)
- VMware Ubuntu安装详细过程
- Android热修复技术选型——三大流派解析
- IO流使用与总结
- RxJava1.0的创建
- display:none和visibility:hidden的区别
- cnblog转载地址
- 了解CSS/CSS3原生变量var
- 用MVP做一个登录注册
- Android优化指南
- 人工智能与伦理道德
- Ruby学习笔记(22)_capybara基础方法
- 哎!马上要涉水了,装修的水!