Bild wird synchron mit Glide geladen

9

Ich möchte einen Espresso-Matcher schreiben, der verifiziert, dass ein "ImageView" eine bestimmte Bitmap hat. Da die App Bilder über Glide lädt, dachte ich, dass ich das gleiche auf der Testseite tun muss, um das Beschneiden / Zentrieren zu berücksichtigen, bevor ich die erwarteten und tatsächlichen Bitmaps vergleichen kann.

Hier ist, was ich bis jetzt gefunden habe:

%Vor%

Das Problem hier ist natürlich, dass ich einen Deadlock habe. Ich bin auf dem Hauptthread (der Matcher wird auf dem Hauptthread IIRC ausgeführt) und Glide möchte einen Backend-Thread, um die Bitmap zu laden und kehrt dann zum Hauptthread (in 'onResourceReady') zurück. Also muss ich von außen auf das Ergebnis warten, das auf der Innenseite steht, während der Hauptthread läuft.

Ich (erfolglos) habe versucht, den aktuellen Looper über Looper.loop() in // ??? weiterzuentwickeln und habe auch die normale Lock / Wait-Methode versucht, aber nichts hat funktioniert. Ich habe keine Ideen mehr ...

    
Thomas Keller 25.02.2016, 11:01
quelle

2 Antworten

-1

Für solche Fälle verwende ich ein einfaches sleep , es ist nicht die beste Option, aber es funktioniert für mich.

%Vor%     
Sandro Machado 28.02.2016 00:24
quelle
-1

Eine Möglichkeit, um Ihre Vergleichslogik in onResourceReady zu behalten, Und dann, wenn Sie irgendeinen Eventbus verwenden, dann lösen Sie das Ereignis mit dem Ergebnis aus und setzen Sie die UI-Logik in die Methode, die dieses Event abonniert. Wenn Sie keinen Event-Bus verwenden, senden Sie LocalBroadcastManager an das Ergebnis.

Zum Beispiel:

%Vor%     
Praveen Yadav 11.04.2016 15:11
quelle