2017-12-31 135 views
1

die folgende Codezeile Glide.with(getContext()).downloadOnly().load(some_uri).submit();Ist downloadOnly synchron oder asynchron? Betrachten

Frage 1) Ist es synchron oder asynchron?

Frage 2) Wenn es synchron ist, wie mache ich es asynchron? Wenn es asynchron ist, wie mache ich es dann synchron?

DIE FRAGE BEZIEHT SICH AUF GLIDEv4

Antwort

0

meine eigene Frage zu beantworten.

Glide.with(getContext()).downloadOnly().load(some_uri).submit(); ist async

Glide.with(getContext()).downloadOnly().load(some_uri).submit().get(); sync ist

+0

Gut! Können Sie die Quelle der Info angeben? Ich habe versucht, Ihnen zu helfen, kann dies jedoch nicht in der Dokumentation finden. –

+0

@MishaAkopov einer der Gleitentwickler geantwortet. https://github.com/bumptech/glide/issues/2775. Dies wurde weiter von mir selbst getestet, indem ich eine einfache Log.d (...) -Anweisung einfügte und prüfte, ob alle Anfragen in der Reihenfolge – AlanSTACK

+0

zurückkehrten, so traurig, dass sie solche Dinge in der Dokumentation nicht haben. –

0

Glide Downloadonly() API ermöglicht es Ihnen, das Bytes eines Bildes in die Disk-Cache herunterzuladen, so dass es verfügbar sein wird später abgerufen werden. Sie können downloadOnly() asynchron downloadOnly (Y target) auf dem ui-Thread oder synchron donwloadOnly (int, int) auf einem Hintergrund-Thread verwenden. Beachten Sie, dass die Argumente leicht unterschiedlich sind, die asynchrone API ein Target und die synchrone API eine ganze Breite und Höhe annimmt.

Um Bilder auf einem Hintergrund-Thread, können Sie problemlos die synchrone Version verwenden müssen:

FutureTarget<File> future = Glide.with(applicationContext) 
    .load(yourUrl) 
    .downloadOnly(500, 500); 
File cacheFile = future.get(); 

Sobald die zukünftigen Erträge sind die Bytes des Bildes im Cache verfügbar. In der Regel wird die downloadOnly() - API nur verwendet, um sicherzustellen, dass die Bytes auf der Festplatte verfügbar sind. Obwohl Ihnen Zugriff auf die zugrunde liegende Cache-Datei gewährt wird, möchten Sie normalerweise nicht damit interagieren.

Stattdessen, wenn Sie später möchten Ihr Bild abzurufen, können Sie so einen normalen Anruf mit einer Ausnahme mit:

Glide.with(yourFragment) 
    .load(yourUrl) 
    .diskCacheStrategy(DiskCacheStrategy.ALL) 
    .into(yourView); 
+0

Diese veraltet (v3). Ich bin interessiert an (v4). Die Entwickler verwarfen bestimmte Methoden (die, auf die Sie verwiesen haben) und haben sie seither durch neue ersetzt. Der Grund, warum ich frage, ist, weil ich bereits alle verfügbaren Dokumente darüber gelesen habe und nicht gefunden habe, was ich brauche. – AlanSTACK

+0

Ah. Ok, jetzt sehe ich, du willst v4. –

Verwandte Themen