我正在使用Picasso库从网址获取图片 我的问题是,当我第一次加载图像并退出我的应用程序时,我回来后我的应用程序尝试再次加载图像,但我不希望它发生。有没有其他方法可以做到这一点(只加载一次图像,而在其他时间不需要加载互联网)?
答案 0 :(得分:0)
试试这个:
Picasso.with(this).load(url).networkPolicy(NetworkPolicy.OFFLINE).into(imageView);
答案 1 :(得分:0)
试试这个:
Picasso.with(this).invalidate(url);
Picasso.with(this)
.load(url)
.networkPolicy(
NetworkUtils.isConnected(this) ?
NetworkPolicy.NO_CACHE : NetworkPolicy.OFFLINE)
.resize(200, 200)
.centerCrop()
.placeholder(R.mipmap.ic_avatar)
.error(R.mipmap.ic_avatar)
.into(imageView);
答案 2 :(得分:0)
上述答案的问题是它们只检查磁盘缓存中图像的可用性,如果缓存中没有图像上线并检索它,则不会覆盖该部分。
首先创建一个扩展Application的类(您可以将它命名为任何不会干扰您的应用程序的类,我的约定是使用“Global”)。
public class Global extends Application {
@Override
public void onCreate() {
super.onCreate();
Picasso.Builder builder = new Picasso.Builder(this);
builder.downloader(new OkHttpDownloader(this,Integer.MAX_VALUE));
Picasso built = builder.build();
built.setIndicatorsEnabled(false);
built.setLoggingEnabled(true);
Picasso.setSingletonInstance(built);
}
}
确保为OkHttp库添加依赖性,它是由毕加索的同一个人开发的
compile 'com.squareup.okhttp:okhttp:2.4.0'
并在您的清单文件应用程序标记中添加该类:
android:name=".Global"
然后当你想要检索图像时:
Picasso.with(context)
.load(Image URL)
.networkPolicy(NetworkPolicy.OFFLINE)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
//Try again online if cache failed
Picasso.with(context)
.load(Image URL)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
Log.v("Picasso","Could not fetch image");
}
});
}
});
上述方法检查图像是否已经缓存,如果没有从互联网上获取。