rxjava2 简单入门用例(一)

前言:

本文只讲用法,不扯原理,讲一些实际使用场景

基础使用篇:

  1. 多个对象
   ArrayList 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 files = new ArrayList<>();
                ImageView imageView = new ImageView(mContext);

                Disposable subscribe = Observable.fromIterable(files)
                        .observeOn(Schedulers.computation())//运行在子线程,用于计算,影响下一步
                        .map(new Function() {
                            @Override
                            public Bitmap apply(File file) throws Exception {
                                return BitmapFactory.decodeFile(file.getName());
                            }
                        })
                        .observeOn(AndroidSchedulers.mainThread())//运行在主线程,影响下一步
                        .subscribe(new Consumer() {
                            @Override
                            public void accept(Bitmap bitmap) throws Exception {
                                imageView.setImageBitmap(bitmap);
                            }
                        });

Observable.fromIterable(Iterable 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 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

你可能感兴趣的:(rxjava2 简单入门用例(一))