Ich benutze Picasso tatsächlich in meinem Projekt. Das Problem ist: es scheint, dass es keinen Cache gibt, so dass das Bild die ganze Zeit die URL (https) neu lädt.Bild mit Picasso laden, wenn offline mit SSL
Ich möchte die Bilder im Disk-Cache haben. Ich möchte den Cache des Bildes, wenn das Bild bereits heruntergeladen wurde, unabhängig davon, ob das WLAN ausgeschaltet ist oder nicht.
Ich habe eine Klasse (PicassoTrustAll.class) geschaffen, um meine Bilder von einer HTTPS-URL zu erhalten:
public class PicassoTrustAll {
private static Picasso mInstance = null;
private PicassoTrustAll(Context context) {
OkHttpClient client = new OkHttpClient();
client.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(
java.security.cert.X509Certificate[] x509Certificates,
String s) throws java.security.cert.CertificateException {
}
@Override
public void checkServerTrusted(
java.security.cert.X509Certificate[] x509Certificates,
String s) throws java.security.cert.CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
} };
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
client.setSslSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
mInstance = new Picasso.Builder(context)
.downloader(new OkHttpDownloader(client))
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e("PICASSO", String.valueOf(exception));
}
}).build();
}
public static Picasso getInstance(Context context) {
if (mInstance == null) {
new PicassoTrustAll(context);
}
return mInstance;
}
}
Und ich benutze es wie folgt aus:
PicassoTrustAll.getInstance(v.getContext())
.load(image_url)
.placeholder(R.drawable.progress_animation)
.into(photo);
Mögliches Duplikat von [Wie Bild aus Cache anzeigen Picasso Image Loader verwenden, wenn WLAN ausgeschaltet ist?] (http://stackoverflow.com/questions/39137700/how-to-display-image-from-cache-using-picasso-image-loader-when-wifi-is-off) –
Nein wirklich, weil ich das Cache-Bild möchte, wenn das Bild bereits heruntergeladen wurde, nicht wenn das WLAN ausgeschaltet ist. –
Aber ich denke das trifft auch auf deine Situation zu. –