您的位置:首页 > 编程语言 > Java开发

关于Rxjava用法简单用法介绍

2018-03-29 16:43 429 查看
Rxjava,很多人在用也有很多人在学习,对于新手来说是什么,还是比较难理解的。
简单来说就是异步。
另外这则也是刚接触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  來源:简书


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: