Bildquelle und Caching
Ich den folgenden code verwenden, um zu zeigen, Bilder von einem webserver:
<Image Source="{Binding Url}" />
Das Bild wird automatisch heruntergeladen, und ich nehme an, es gibt auch einige caching basierend auf der Url.
Mein problem ist, dass, wenn die app offline ist, wird die assumably zwischengespeicherte Bilder nicht angezeigt werden.
Gibt es eine Möglichkeit, ändern Sie die caching-Verhalten, so dass die Bilder auch geladen, wenn es kein Netzwerk verfügbar ist? Zeiger auf Dokumentation hinsichtlich der Zwischenspeicherung wäre sehr hilfreich, wie gut.
InformationsquelleAutor thumbmunkeys | 2013-06-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
BitmapImage
caches automatisch externe Grafiken standardmäßig. Es ist am besten in Verbindung mitCreateOptions="BackgroundCreation"
für die beste Leistung.In diesem MSDN-blog-Beitrag, alt, aber immer noch relevant sind, aufgeführt und erläutert alle
CreationOptions
und das caching ist die automatische und in den meisten Modi.Ich verwenden Sie diese Optionen, um die Anzeige viele Nachrichten mit Bildern und es funktioniert gut. Ich kann laden Sie die Liste mit den Artikeln, beenden Sie die app, und schalten Sie Flugzeugmodus Auf ein um, dann starten Sie eine neue Instanz der app und die Bilder noch laden.
Manuelle Ansatz
Wenn Sie möchten, um zu Steuern das caching selbst und cache HTTPS-Ressourcen, dann gibt es nur wenige gute Beispiele...
(kann aktualisiert werden müssen, um die Arbeit mit WP 7.5 oder 8)
das ist möglicherweise ein Erbe Silverlight Grund - ie. nicht-cache-HTTPS-Inhalte im browser. Wenn Sie möchten, cache HTTPS-Ressource, die Sie haben zu schreiben, dass Sie sich selbst - ich kann hinzufügen, ein paar links zu ein paar gute Beispiele, wenn Sie wollen?
das silverlight-argument klingt sehr vernünftig, und in Bezug auf die Beispiele, ich mag ja 🙂
Die links machen diese Antwort perfekt 🙂 Hier noch ein paar Ergänzungen: github.com/artem-zinnatullin/jet-image-loader
InformationsquelleAutor Neil Turner
Habe ich eine Lösung für Sie. Es ist JetImageLoader, ich habe es für die Anwendung, wo wir brauchen, um zu laden, cache und zeigen große Menge von logos, icons und so weiter.
Es kann verwendet werden, als verbindlich Konverter, so sollten Sie nicht selbst den code ändern! Aktualisieren Sie einfach Ihren XAMLs!
Bitte schauen Sie Proben im repository, du wirst es lieben 😉
Features:
Hier ist das Beispiel:
Was meinst du mit "nicht-undicht"? Memory leaks? Wenn ja, cache-Speicher basierend auf
WeakRefDictionary
, soGC
können Objekte sammeln, wenn er will, kein memory-leaks 🙂 können Sie mir schreiben auf GitHub, falls Ihr noch FragenJa, aber was ist mit nulling-ungenutzte Bilder? Es gibt berühmte Leck in der WP. Ich habe diese Problemumgehung vor einiger Zeit: simca.codeplex.com. Mehr details über Leck: stackoverflow.com/questions/9549980/... stackoverflow.com/questions/17571825/... stackoverflow.com/questions/13816569/... stackoverflow.com/questions/18127027/...
Hm, ich Analysierte meine
wp8
app, wo wir haben große Menge von großen und kleinen Bilder laden perJetImageLoader
mit memory-profiler, und ich sah, dass nach dem schließen der Seite mit Bildern GC gereinigt Speicher zu Betrag ~= Speicher, was war vor dem öffnen dieser Seite. Kann dieser bug behoben wurde inwp8
?Wie auch immer, danke für das Thema, ich werde versuchen, es zu überprüfen in der nächsten Zeit
InformationsquelleAutor Artem Zinnatullin
Ich glaube nicht, dass es eine build in der Art und Weise, es zu tun, aber Sie konnte die Bilder speichern im IsolatedStorage und einen Konverter verwenden, der überprüft, der internet-Verfügbarkeit und entweder gibt Sie die online-oder offline-url.
Eine schnelle Suche ergab das , die möglicherweise genau das, was du suchst (es ist kompatibel zu Windows Phone 7 und ist vielleicht nicht die beste Lösung für die Windows Phone 8)
InformationsquelleAutor Stefan Wexel
Meine Lösung:
(Bild speichern aus dem web auf die lokale Speicherung und binden Sie das gespeicherte Bild auf der Seite)
XAML
DataModel
Magie
NotifyTaskCompletion
InformationsquelleAutor Максим Гутиков
Könnten Sie auch FFImageLoading (https://github.com/molinch/FFImageLoading/)
Funktionen
Es ist genauso einfach wie:
Beispiel-Projekte hier: https://github.com/molinch/FFImageLoading/tree/master/samples/
CacheDuration="30"
hat den gleichen Effekt, als wennCacheDuration = TimeSpan.FromDays(30)
in C#, richtig?Hallo Danke für die ausgezeichnete Probe. Ich bin mit Bindung für Bild einfügen in der ffimageloading in android. Wenn ich cache-Dauer auf bestimmte Zeit, für die ffimage, ist es in Ordnung arbeiten?
FFImage ist jetzt abgeschrieben, sollten Sie
MvxCachedImageView
. Ich werde aktualisieren, meine Antwort. Es funktioniert auf allen Plattformen. Sollten SieCacheDuration
Eigenschaft, die vonTimestamp
geben.InformationsquelleAutor Daniel Luberda