问题描述
我正在通过以下方式并行进行两个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加载图像时,我们应该调用.submit()
方法或.into(...)
才能成功获取位图或加载图像。