android rxjava的简单使用
来源:互联网 发布:希区柯克剧场 知乎 编辑:程序博客网 时间:2024/04/30 19:15
rxjava很强大,非常强大。我很喜欢。嘿嘿
刚接触rxjava不久,整理了下代码,留个备份。
首先不清楚观察者的,建议去网上看下先。不然肯定是懵逼的。
目录
/**第一个简单使用*/protected abstract void testRxJava();/**简化*/protected abstract void testRxJava1();/**转换map*/protected abstract void testRxJava2();/**转换flatmap*/protected abstract void testRxJava3();/**just集合操作*/protected abstract void testRxJava4();/**toList() take()用法 */protected abstract void testRxJava5();/**interval() take()用法*/protected abstract void testRxJava6();/**subscribeOn(Schedulers.io())线程执行的问题*/protected abstract void testRxJava7();
根据目录,可以匹配对应的功能例子
1.
@Overrideprotected void testRxJava() { Observable<String> myObservable = Observable.create(new Observable.OnSubscribe<String>(){ @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("被观察者 发送的数据"); subscriber.onCompleted(); } }); Subscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("接受到的被观察者的消息",s + "testRxJava"); } }; /**订阅 建立联系*/ myObservable.subscribe(mySubscriber);}
2.
@Overrideprotected void testRxJava1() { // Observable<String> myObservable = Observable.just("发送数据"); //new Action1 是 new Subscriber的简写 只包含call方法 也可以自行了解 Action0 等方法 Observable.just("发送数据").subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("接收到的数据:", s + "testRxJava1"); } });}
3.
@Overrideprotected void testRxJava2() { Observable.just("发送数据").map(new Func1<String, String>() { @Override public String call(String s) { return s + "中途穿插"; } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("接收到的数据",s + "testRxJava2"); } });}
4.
@Overrideprotected void testRxJava3() { Observable.just("发送数据").flatMap(new Func1<String, Observable<String>>() { @Override public Observable<String> call(String s) { return Observable.just("中间搞下事情"); } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("接收到的数据",s + "testRxJava3"); } });}
5.
@Overrideprotected void testRxJava4() { List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"); Observable.just(list).subscribe(new Action1<List<String>>() { @Override public void call(List<String> strings) { String result = ""; for (String item : strings){ result += item; } Log.d("testRxJava4 结果:",result); } }); /** 注意,just()方法也可以传list,但是发送的是整个list对象,而from()发送的是list的一个item * */ Observable.from(list).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("testRxJava4 结果2:",s); } }); Observable.from(list).map(new Func1<String, String>() { @Override public String call(String s) { if(s.equals("c")){ return s + "lahm"; } return s; } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("testRxJava4 结果3:",s); } });}
6.
/** * toList 总结:可以看到这里讲String[] 数组类型转化为List类型了,toList()操作符的目的应该是将所有的数据放进一个List中去, * 然后将这个List传递给这里的subscribe。 * * take 只发射前面的N项数据 */@Overrideprotected void testRxJava5() { String [] data = new String[]{"a","b","c"}; Observable.from(data).take(2).toList().subscribe(new Action1<List<String>>() { @Override public void call(List<String> strings) { String result = ""; for(String item : strings) result += item; Log.d("testRxJava5 结果:",result); } });}
7.
/*** * * take 只发射前面的N项数据 */@Overrideprotected void testRxJava6() { //这个方法时2秒后轮训,轮训的间隔时间是3秒 //除了 ed限时输入 验证码 还没发现其他的用法 Observable.interval(2,3, TimeUnit.SECONDS).take(3).subscribeOn(Schedulers.io()).subscribe(new Action1<Long>() { @Override public void call(Long aLong) { Log.d("testRxJava6 结果:",aLong+""); } });}
8.
/*** * subscribeOn(Schedulers.io()) 线程执行的问题 */@Overrideprotected void testRxJava7() { Observable.just("测试").map(new Func1<String, String>() { @Override public String call(String s) { Log.d("testRxJava7:","map执行的线程:"+Thread.currentThread().getName()); return s+"转换1"; } }) //result RxIoScheduler-3 //.subscribeOn(Schedulers.io()) //main .subscribeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("testRxJava7:","接收执行的线程:"+Thread.currentThread().getName()); } });}
0 0
- android rxjava的简单使用
- RxJava的简单使用
- RxJava的简单使用
- Rxjava的简单使用
- Android RxJava的使用
- Android:RxJava的使用
- [Android]RxJava的简单介绍和基本使用(一)
- RxJava的简单使用入门
- Rxjava的最简单使用
- RxJava的简单使用(一)
- Rxjava+Retrofit的简单使用
- 关于Rxjava的简单使用
- RxJava从入门到放弃1.0--rxjava的简单使用
- [Android]RxJava的简单介绍和基本使用(二):retrofit2的简单介绍
- Android MVP+RxJava+Retrofit 的简单模型
- Rxjava中的range的简单使用。
- Rxjava操作符的简单使用
- MVP+retrofit+rxjava+Knife的简单使用
- linux Nginx 安装
- Git常用命令快速一览
- 公共网络开放的WebService接口
- JS动态添加option和删除option
- postgresql dblink使用
- android rxjava的简单使用
- java内存结构和对象创建的过程
- Spring-data-redis
- 自定义ViewGroup动态添加删除Tab
- 浅谈构造函数和析构函数的调用顺序
- Docker 技巧:删除 Docker 容器和镜像
- web容器, ejb, jms 介绍
- Python(8): Lambda,列表解析器,生成器表达式,range函数
- itunes connect上传前的准备