Holen Sie sich Bitmap von der URL mit anderen Api-Aufrufen parallel mit Glide und Rxjava in Android

Sep 29 2020

Ich mache zwei API-Aufrufe parallel auf folgende Weise.

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

Ich möchte eine Bitmap von einer URL laden und die Bitmap zurücksenden. Etwas wie das

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

In der Methode getImageBitmapversuche ich zurückzukehren Single<Bitmap>. Etwas wie das.

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

Ich bekomme keine Ergebnisse daraus. Wie bekomme ich Bitmap von Glide im folgenden Ansatz?

Antworten

abhishekmaharajpet Sep 29 2020 at 13:24

Beim Laden des Bildes von Glide sollten wir entweder die .submit()Methode aufrufen oder .into(...)um die Bitmap erfolgreich abzurufen oder das Bild zu laden.