关于Rxjava用法简单用法介绍
2018-03-29 16:43
429 查看
Rxjava,很多人在用也有很多人在学习,对于新手来说是什么,还是比较难理解的。
简单来说就是异步。
另外这则也是刚接触RxJava,所以不能很详细的讲述原理。
需要了解原理的https://www.jianshu.com/p/e0891032ee4d,这里有非常详细的介绍。
既然有大牛已经介绍了,为什么我还是要写者篇文章呢?
第一,为了巩固自己已经学到的,第二,向比作者新的“玩家”介绍用法。
话不多说直接上干货。
引入依赖:
File file = new File("D:/rxjava笔记");
Observable.just(file,file)//1.创建被观察者
.flatMap(new Func1<File,Observable<File>>(){//2.如果需要对数据一对多的转化
@Override
public Observable<File> call(File file) {
return Observable.from(file.listFiles());
}
}).filter(new Func1<File,Boolean>(){//3.判断数据的是否满足要求
@Override
public Boolean call(File file) {
return file.getName().endsWith(".txt");
}
}).map(new Func1<File,String>(){//4.需要对数据处理类型的转化
@Override
public String call(File file) {
return file.getName();
}
}).observeOn(Schedulers.immediate())//订阅操作会在指定线程执行,默认为当前线程
.subscribeOn(Schedulers.immediate())//观察结果会在指定线程中执行,默认为当前线程
.subscribe(new Observer<String>() {//创建观察者,被观察者被订阅
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
System.out.println("fileName:"+s);
}
});
上图为我的文件夹文件
打印结果附上
在写列子的过程中,出现一个问题,问题现象是:为了方便解释rxjava每一步的含义,作者尝试将链式写法改成分步写法,出现的了输出结果不是理想结果,在反复尝试后,发现当Observable创建后的每一步操作返回的Observable对象不是原对象,是一个全新的Observable对象。建议读者直接使用链式方式写,避免不必要的时间上的浪费。
以上创建被观察者有
//Observable.just(file,file)//一个或多个参数
// @Override
// public void call(SingleSubscriber<? super String> singleSubscriber) {
//
// }
// });
最后希望读者能给这篇不成熟的文章介绍一点点建议,相互交流才能更好的提高。
简单来说就是异步。
另外这则也是刚接触RxJava,所以不能很详细的讲述原理。
需要了解原理的https://www.jianshu.com/p/e0891032ee4d,这里有非常详细的介绍。
既然有大牛已经介绍了,为什么我还是要写者篇文章呢?
第一,为了巩固自己已经学到的,第二,向比作者新的“玩家”介绍用法。
话不多说直接上干货。
GitHub链接和引入依赖的
gradle代码: Github: https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid
引入依赖:
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
File file = new File("D:/rxjava笔记");
Observable.just(file,file)//1.创建被观察者
.flatMap(new Func1<File,Observable<File>>(){//2.如果需要对数据一对多的转化
@Override
public Observable<File> call(File file) {
return Observable.from(file.listFiles());
}
}).filter(new Func1<File,Boolean>(){//3.判断数据的是否满足要求
@Override
public Boolean call(File file) {
return file.getName().endsWith(".txt");
}
}).map(new Func1<File,String>(){//4.需要对数据处理类型的转化
@Override
public String call(File file) {
return file.getName();
}
}).observeOn(Schedulers.immediate())//订阅操作会在指定线程执行,默认为当前线程
.subscribeOn(Schedulers.immediate())//观察结果会在指定线程中执行,默认为当前线程
.subscribe(new Observer<String>() {//创建观察者,被观察者被订阅
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
System.out.println("fileName:"+s);
}
});
上图为我的文件夹文件
打印结果附上
在写列子的过程中,出现一个问题,问题现象是:为了方便解释rxjava每一步的含义,作者尝试将链式写法改成分步写法,出现的了输出结果不是理想结果,在反复尝试后,发现当Observable创建后的每一步操作返回的Observable对象不是原对象,是一个全新的Observable对象。建议读者直接使用链式方式写,避免不必要的时间上的浪费。
以上创建被观察者有
//Observable.just(file,file)//一个或多个参数
//Observable.from(new File[]{file,file})//数组(String[])、列表(List)等集合类型的
Observable<File> ob3 = Observable.create(new Observable.OnSubscribe<File>(){ // @Override // public void call(Subscriber<? super File> subscriber) { // subscriber.onNext(file); // subscriber.onNext(file); // subscriber.onCompleted(); // } // });// Single.create(new Single.OnSubscribe<String>(){
// @Override
// public void call(SingleSubscriber<? super String> singleSubscriber) {
//
// }
// });
最后希望读者能给这篇不成熟的文章介绍一点点建议,相互交流才能更好的提高。
参考文章 https://www.jianshu.com/p/e0891032ee4d 來源:简书
相关文章推荐
- 关于RxJava简单用法(二)
- 关于RxJava的简单用法(四)
- 关于jsp中session,application的简单介绍以及用法
- 关于oracle with as用法(比较简单的介绍)
- 【转】关于MFC程序中ScrollBar的用法简单介绍
- 【c#】关于c#中data控件的简单用法介绍
- 关于RxJava的简单用法(三)
- Android动画--逐帧动画和补间动画简单介绍和基本用法(一)
- oracle中如何创建序列号及用法简单介绍
- 原创:关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例
- 简单介绍一下Android中Service的用法
- JFreeChart简单介绍及用法(入门)
- 关于使用ETL工具Kettle的简单介绍(一)
- Rxjava1.x学习记录(一)名词及用法的简单介绍
- matlab的inpolygon用法简单介绍
- 关于EXT2.0 的简单介绍
- JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇
- RxJava简单介绍
- bitmap几种简单用法介绍
- 关于输入输出函数一些函数的简单介绍