前言:
本文只讲用法,不扯原理,讲一些实际使用场景
基础使用篇:
- 多个对象
ArrayList<File> files = new ArrayList<>();//创建一个集合
ImageView imageView = new ImageView(mContext);//创建一个imageview
Observable.fromIterable(files)//观察一个集合
.observeOn(Schedulers.computation())//运行在子线程,用于计算,影响下一步
.map(t -> BitmapFactory.decodeFile(t.getPath()))//遍历将的图片转化成bitmap
.observeOn(AndroidSchedulers.mainThread())//运行在主线程,影响下一步
.subscribe(t -> imageView.setImageBitmap(t));//设置图片
上述例子用了lambda表达式,你可能觉得看不懂
下面是没表达式的,对比一下,或者去学习一下,你就明白 t->是什么意思了
ArrayList<File> files = new ArrayList<>();
ImageView imageView = new ImageView(mContext);
Disposable subscribe = Observable.fromIterable(files)
.observeOn(Schedulers.computation())//运行在子线程,用于计算,影响下一步
.map(new Function<File, Bitmap>() {
@Override
public Bitmap apply(File file) throws Exception {
return BitmapFactory.decodeFile(file.getName());
}
})
.observeOn(AndroidSchedulers.mainThread())//运行在主线程,影响下一步
.subscribe(new Consumer<Bitmap>() {
@Override
public void accept(Bitmap bitmap) throws Exception {
imageView.setImageBitmap(bitmap);
}
});
Observable.fromIterable(Iterable<? extends T> source)
用在观察集合上
Observable.fromArray(T...items)
用在数组上
特性是:会将集合或者数组中的每一个元素都按上面的流程走一遍.imageView会设置多次bitmap
2.一个对象
Disposable subscribe = Observable.just("")
.subscribe(t -> {
//在这里操作对象
println(t.toString());//这个t就是just()里面的""
});
Observable.just(T t)
简单观察一个对象使用just操作符.
3.延时操作
Observable.timer(
3, //延时3秒
TimeUnit.SECONDS//计时单位,秒
)
.subscribe(t -> {
println("延时"+t+"秒,打印");
});
4.定时器
Observable.intervalRange(
1,//从1开始计数
5,//计时5次
0, //延时几秒开始
1, //每次间隔1
TimeUnit.SECONDS)//单位秒
.subscribe(t -> {
println(t+"");//结果:1,2,3,4,5
});
5.过滤不符合条件的
ArrayList<File> files = new ArrayList<>();//创建一个集合
ImageView imageView = new ImageView(mContext);//创建一个imageview
Observable.fromIterable(files)
.filter(t -> t.exists())//判断文件是否存在,如果文件不存在,不会往下走,此条数据跳过
.subscribe(t -> {
});
在用例1的基础上,使用filter
总结:
observeOn()
这个方法只在用例1
里面写了出来,
其实每次使用都是需要用到的.
作用就是指定接下来的操作会运行在哪个线程上.可以指定多次.
这个方法很重要,所以总结特意指出来.
以上就是rxjava2常用的操作符了.希望能为你解决一点疑惑.
QQ交流群:573676189 493180098
网友评论