2017-06-14 6 views
0

Ich verwende Glide und Firebase zum Laden und Einlösen von Bildern. Normalerweise benutze ich Signature mit Bild erstellt Zeit dann bestimmen Cache-Zeit. Aber in Firebase Ich kann Zeit nur mit der zweiten Anforderung getMetadata() erstellt werden. Wie führe ich das Caching korrekt aus, wenn ich ein Bild in ein anderes mit demselben Namen in meinem Speicher ändere? Sollte ich getMetadata() verwenden oder gibt es andere Möglichkeiten?Firebase + Gleiten, Caching-Strategie

Glide.with(getContext()) 
        .using(new FirebaseImageLoader()) 
        .load(storageReference.child(item.getImageUrl())) 
        .placeholder(R.drawable.category_image_not_found) 
        .signature(???) 
        .into(image); 

Antwort

0

Ich war in einer ähnlichen Situation fest, so lange ich mich erinnern kann! Die Verwendung von getMetadata() ist langsam und verursacht Verzögerungen. Was ich dachte war, dass es keine andere Möglichkeit gab, als mein Image auf dem neuesten Stand zu halten, sondern die Realtime Database zu integrieren. Dies kann in einer der folgenden Arten erfolgen: -

Erstens:

Jedes Mal, wenn das Bild an der bestimmten Speicherstelle bearbeitet wird, aktualisieren Sie die timestamp für das Bild des Knotens in der Echtzeit-Datenbank. Und wenn Sie das Bild anzeigen möchten, laden Sie einfach seinen Zeitstempel herunter und schreiben Sie eine Glide.signature(timestamp) ähnliche Methode, wie Sie es erwähnt haben.

Zweitens:

einfach die Download-URL des Bildes erhalten, wann immer Sie bearbeiten/sie laden, und die URL in der Echtzeit-Datenbank speichern. Auf diese Weise wird, wann immer das Bild aktualisiert wird, eine andere URL am selben Ort gespeichert. Dadurch wird sichergestellt, dass in Ihrem Cache keine veralteten Bilder angezeigt werden (die Änderung der URL der Quelle ist die empfohlene Methode zum Ungültigmachen von Caches für Glide).

Ich verstehe, dass es sich um einen Overhead handeln könnte, bei dem zuerst Daten aus der Echtzeitdatenbank abgerufen und dann das Image heruntergeladen werden. Dies ist jedoch die einzige Möglichkeit, wenn Sie Glide + Firebase verwenden. Darüber hinaus können Persistenz und andere Echtzeit-Macken in der Datenbank nahtlos eingesetzt werden.

Verwandte Themen