使用Picasso库加载Image一次

时间:2016-08-24 13:01:33

标签: android picasso

我正在使用Picasso库从网址获取图片 我的问题是,当我第一次加载图像并退出我的应用程序时,我回来后我的应用程序尝试再次加载图像,但我不希望它发生。有没有其他方法可以做到这一点(只加载一次图像,而在其他时间不需要加载互联网)?

3 个答案:

答案 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");
              }
        });
     }
  });

上述方法检查图像是否已经缓存,如果没有从互联网上获取。