讲述RxJava核心思想

移动开发 专栏收录该内容
23 篇文章 0 订阅

例:
OkHttp 是为了完成网络请求的一个需求

Glide 是为了完成图片加载显示的一个需求

RxJava 不能完成任何的需求他是为了转变编码思维,响应式流编程思维

改变思维有什么用呢?请往下看!!!!!!!

1.为什么要用Rxjava

传统方式编写代码

A.程序员(小明)编写方式     

B.程序员(小杨)编写方式

3.了解RxJava响应式流编程思维

所有的需求都会有起点和终点
例如1://起点(点击事件)---->图片地址---->请求服务器---->下载图片---->压缩图片---->给图片添加水印---->更新UI---->显示图片(终点结束)

 private void rxjavaDownloadImg(View view) {
        //起点(点击事件)---->图片地址---->请求服务器---->下载图片---->压缩图片---->给图片添加水印---->更新UI---->显示图片(终点结束)
        Observable.just(PATH)//事件源 String类型    第二步
                .map(new Function<String, Bitmap>() {
                    @Override
                    public Bitmap apply(String s) throws Exception {  //第三步
                        //例:请求服务器下载图片
                        Bitmap bitmap = null;
                        return bitmap;//return到下一个线程
                    }})
                /*  .map(new Function<Bitmap, Bitmap>() {  开发完成后,此功能不再需要时,直接注释即可
                      @Override
                      public Bitmap apply(Bitmap bitmap) throws Exception {//第四步
                          //例:压缩图片
                          return bitmap;//return到下一个线程
                      }})*/
                .map(new Function<Bitmap, Bitmap>() {
                    @Override
                    public Bitmap apply(Bitmap bitmap) throws Exception {//第五步
                        //例:给图片添加水印
                        return bitmap;//return到下一个线程
                    }})
                //线程调度
                .subscribeOn(Schedulers.io()) //上游分配异步线程,处理耗时操作 Schedulers.io()
//------------------------------上游下游分割-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                .observeOn(AndroidSchedulers.mainThread())  //下游为Android主线程
                .subscribe(new Observer<Bitmap>() { //订阅  起点和终点关联起来
                    @Override
                    public void onSubscribe(Disposable d) {//第一步
                        //点击时最先执行该方法
                        showLoadingDialog("图片加载中...", false);
                    }
                    @Override
                    public void onNext(Bitmap bitmap) {//第六步
                        //例:显示图片
                        //例:更新UI
                    }
                    @Override
                    public void onError(Throwable e) {//异常,直接结束

                    }
                    @Override
                    public void onComplete() {//结束最终点  第七步
                        closeLoadingDialog();//对话窗结束
                    }
                });
    }

4.Rxjava优缺点
优点:改善思维,效率提升,思路整洁
改善我们的编程思维方式,让我们编写代码更加高效,能够梳理我们的流程,更加清晰
缺点:代码不整洁,线程没控制好容易导致内存泄露

  • 0
    点赞
  • 2
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值