zoukankan      html  css  js  c++  java
  • Rxjava2不能再发射Null了

    RxJava2的最大改变就是不能再流里发射Null了,有人会问发射了就怎么了,答案是你的流会因为NPE断开.

    例如下面这段代码因为文件被删了找不到返回null,这时候就不触发下面Consumer的accept。

    Disposable subscribe = Observable.fromCallable(new Callable<Bitmap>() {
                    @Override
                    public Bitmap call() {
                        FileInputStream fis;
                        Bitmap b=null;
                        try {
                            fis = new FileInputStream(path);
                            b = BitmapFactory.decodeStream(fis);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        }
                        return b;
                    }
                }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Bitmap>() {
                    @Override
                    public void accept(Bitmap bitmap) {
                        if (bitmap != null) {
                           viewBc.setImageBitmap(bitmap);
                        } else {
                            viewBc.setImageResource(R.drawable.wallpaper_default);
                        }
                    }
                });

    如果需要处理,则需要处理这种异常Consumer<Throwable>

    Disposable subscribe = Observable.fromCallable(new Callable<Bitmap>() {
                    @Override
                    public Bitmap call() {
                        FileInputStream fis;
                        Bitmap b=null;
                        try {
                            fis = new FileInputStream(path);
                            b = BitmapFactory.decodeStream(fis);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
    
                        }
                        return b;
                    }
                }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Bitmap>() {
                    @Override
                    public void accept(Bitmap bitmap) {
                        if (bitmap != null) {
                           viewBc.setImageBitmap(bitmap);
                        } else {
                            viewBc.setImageResource(R.drawable.wallpaper_default);
                        }
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        viewBc.setImageResource(R.drawable.wallpaper_default);
                    }
                });
  • 相关阅读:
    BZOJ2095 [Poi2010]Bridges
    BZOJ3307 雨天的尾巴
    【CSP2020】 T3 动物园
    【CSP2020】 T1儒略日
    洛谷P3455 [POI2007]ZAP-Queries
    【黑科技学习】光速幂
    XJTUOJ #1023 JM的祖传零钱箱
    XJTUOJ #1168 zxh的后宫管理系统
    XJYUOJ #1053 nocriz与队列计算机
    XJTUOJ #1017 JM的完美集合
  • 原文地址:https://www.cnblogs.com/mingfeng002/p/11119338.html
Copyright © 2011-2022 走看看