在Android中使用glide和Rxjava从URL与其他Api调用并行获取位图

问题描述

我正在通过以下方式并行进行两个API调用

Single.zip(API1.subscribeOn(Schedulers.io()),API2.subscribeOn(Schedulers.io()),Bifunction())).subscribe();

我想从URL加载位图并将其发送回去。像这样

Single.zip(API1.subscribeOn(Schedulers.io()),getimageBitmap(),Function3())).subscribe();

方法getimageBitmap中,我试图返回Single<Bitmap>。像这样的东西。

Single.create(new SingleOnSubscribe<Bitmap>() {
            @Override
            public void subscribe(final SingleEmitter<Bitmap> emitter) throws Exception {
                Glide.with(context).asBitmap().load(url)
                        .diskCacheStrategy(diskCacheStrategy.NONE)
                        .error(R.drawable.ic_login_error).addListener(new RequestListener<Bitmap>() {
                    @Override
                    public boolean onLoadFailed(@Nullable GlideException e,Object model,Target<Bitmap> target,boolean isFirstResource) {
                        emitter.onSuccess(null);
                        return false;
                    }

                    @Override
                    public boolean onResourceReady(Bitmap resource,DataSource dataSource,boolean isFirstResource) {
                        emitter.onSuccess(resource);
                        return false;
                    }
                });
            }
        }).subscribeOn(AndroidSchedulers.mainThread());

我没有得到任何结果。如何通过以下方法从Glide获取位图?

解决方法

从Glide加载图像时,我们应该调用.submit()方法或.into(...)才能成功获取位图或加载图像。