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);
                }
            });

 

转载于:https://www.cnblogs.com/mingfeng002/p/11119338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值