Ich habe eine ziemlich große Liste von Bild-URLs, die ich verwende, um eine ViewPager
mit Picasso laden. Ich muss in der Lage sein, für diese Bilder Freigabe-Funktionen über eine Absicht bereitzustellen (schließlich Freigabe über ShareActionProvider). Nach dem, was ich gelesen habe, ist Picasso nicht wirklich dafür ausgelegt, so etwas aus der Box zu handhaben, obwohl es alle notwendigen Werkzeuge dafür bietet.Erhalten Bild UI von Picasso?
Mein Plan vor der Forschung war es, eine einfache LruCache
erstellen, die die URL als Schlüssel und Bitmap-Wert verwendet. Diese Zwischenspeicherung würde in onBitmapLoaded
über Picassos Target
Schnittstelle erfolgen. Wann immer ich ein Bild teilen möchte, überprüfe ich den Cache nach der Bitmap. Wenn es nicht da ist, hole ich mit Picasso. Jetzt, da ich noch eine zwischengespeicherte Bitmap habe, schreibe ich in eine Datei (... dieser Teil scheint nicht richtig zu sein, obwohl ich in eine Datei schreiben muss, um ein uri zu bekommen, oder?) Und füge die Datei uri hinzu die Absicht.
Allerdings sehe ich, dass ich mit der Picasso.Builder
kann ich einen eigenen Cache setzen - und behalten einen Verweis auf - https://stackoverflow.com/a/18552559/413254. Dies bedeutet, dass ich mit richtig Umsetzung hashCode
und equals
Methoden mit dem benutzerdefinierten Target
und Verwirrung beseitigen könnte genau das Recycling zu gewährleisten, Retrieval, usw.
Meine Frage ist, wie funktioniert Picasso diesen Cache verwenden? Was sind die Schlüssel? Gibt es eine Möglichkeit, eine Bitmap Uri zu bekommen, ohne sie auf die Festplatte zu schreiben?
Picasso speichert den Schlüssel aus der Anfrage. Der Schlüssel wird mithilfe der URL und aller eindeutigen Umwandlungsschlüssel erstellt (z. B. Größenänderung, Drehung und benutzerdefinierte Transformationen). – dnkoutso
Hi @loeschg hast du eine Lösung dafür bekommen? Ich verwende Picasso mit OkHttpDownloader, um die Bilder in SD-Karte zu laden. Ich möchte das Bild-URI mit der angegebenen URL erhalten. Kannst du mir bitte deinen Code mitteilen? – Noundla
@Noundla Leider glaube ich nicht, dass ich es tat. Ich habe vielleicht meinen eigenen LruCache benutzt und habe ihn daraus geschnappt. Es war eine Weile ¯ \\ _ (ツ) _/¯ – loeschg