0
我實際上在我的項目中使用畢加索。問題是:似乎沒有緩存,所以圖像重新加載所有的時間url(https)。離線時使用SSL加載畢加索圖像
我想要在磁盤緩存中的圖像。 我想要圖片緩存時已經下載的圖像,而不取決於如果WIFI關閉或不。
我創建了一個類(PicassoTrustAll.class)從HTTPS URL讓我的圖片:
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;
}
}
我用它是這樣的:
PicassoTrustAll.getInstance(v.getContext())
.load(image_url)
.placeholder(R.drawable.progress_animation)
.into(photo);
可能的重複[如何從緩存中顯示圖像使用畢加索圖像加載器時,無線關閉?](http://stackoverflow.com/questions/39137700/how-to-display-image-from-cache-using-picasso-image-loader-when-wifi-is-off ) –
沒有真正的原因,因爲我想在圖像已經下載時獲取緩存圖片,而不是在WIFI關閉時。 –
但我認爲這也適用於你的情況。 –