美文网首页
rxjava2 简单入门用例(一)

rxjava2 简单入门用例(一)

作者: Jlanglang | 来源:发表于2018-04-27 09:55 被阅读0次

    前言:

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

    基础使用篇:

    1. 多个对象
       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

    相关文章

      网友评论

          本文标题:rxjava2 简单入门用例(一)

          本文链接:https://www.haomeiwen.com/subject/opavlftx.html