これを行うことで、アプリの起動時にさまざまなWebサイトからダウンロードした画像がいくつかあります。
Picasso.with(context).load(image_url).fetch();
ここで、ユーザーがアプリを閉じてオフラインになったとします。アプリが再び起動すると、ピカソは次のように画像を表示します。
Picasso.with(ctx).load(image_url).placeholder(R.drawable.ph).into(imageView);
問題は、一部の画像がディスクキャッシュから読み込まれ(デバッグモードでは黄色の三角形)、他の画像ではピカソがプレースホルダーを表示することです。
どうして?私はすべての画像がディスクキャッシュからロードされることを期待しています。
この戦略でこのコードを使用できます。Picassoはキャッシュ内の画像を検索し、失敗した場合にのみネットワーク経由で画像をダウンロードします。
Picasso.with(context)
.load(Uri.parse(getItem(position).getStoryBigThumbUrl()))
.networkPolicy(NetworkPolicy.OFFLINE)
.into(holder.storyBigThumb, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
// Try again online if cache failed
Picasso.with(context)
.load(Uri.parse(getItem(position)
.getStoryBigThumbUrl()))
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(holder.storyBigThumb);
}
});
これを行う:
Picasso.with(this)
.load(url)
.networkPolicy(NetworkPolicy.OFFLINE)
.into(imageView);
また、私の以前の答えを確認してください、多分あなたを助けるでしょう: ピカソのキャッシュを無効にする
このロジックは私のために働いた:
if network is available:
Picasso.with(context).load(image).into(imageView);
else:
Picasso.with(context).load(image).networkPolicy(NetworkPolicy.OFFLINE).into(imageView);
RequestCreator
here like の個別のインスタンスの作成を回避するには、次のようにします。
RequestCreator request = mPicasso.load(TextUtils.isEmpty(imageUrl) ? null : imageUrl)
.placeholder(R.drawable.ic_default)
.error(R.drawable.ic_default)
.transform(transformations)
.noFade()
.centerCrop();
request
.networkPolicy(NetworkPolicy.OFFLINE)
.into(mImageView, new Callback.EmptyCallback(){
@Override
public void onError() {
super.onError();
request.into(mImageView);
}
});