Ottieni bitmap dall'URL con altre chiamate API parallelamente utilizzando glide e Rxjava in Android

Sep 29 2020

Sto effettuando due chiamate API parallele nel modo seguente.

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

Vorrei caricare una bitmap da un URL e inviare indietro la bitmap. Qualcosa come questo

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

Nel metodo getImageBitmapsto cercando di tornare Single<Bitmap>. Qualcosa come questo.

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, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                        emitter.onSuccess(resource);
                        return false;
                    }
                });
            }
        }).subscribeOn(AndroidSchedulers.mainThread());

Non sto ottenendo alcun risultato da questo. Come ottenere Bitmap da Glide nel seguente approccio?

Risposte

abhishekmaharajpet Sep 29 2020 at 13:24

Durante il caricamento dell'immagine da Glide, dovremmo chiamare il .submit()metodo o .into(...)per ottenere correttamente la bitmap o caricare l'immagine.