为什么Picasso没有在缓存中保存图像以供离线使用?

时间:2017-10-16 06:40:40

标签: android picasso

我有以下代码,它不会按预期加载图像。它在网上运行良好,但我也需要离线加载图像。我也允许写外部存储。任何想法都会非常有用。

Picasso.with(getContext())
    .load(userInfo.getUserPictureUri())
    .networkPolicy(NetworkPolicy.OFFLINE)
    .resize(80, 80)
    .error(R.drawable.profile_picture)
    .centerCrop()
    .into(imageView_ProfilePictureSide, new Callback() {
        @Override
        public void onSuccess() {
        }

        @Override
        public void onError() {
            // Try again if cache failed
            Picasso.with(getActivity())
                 .load(userInfo.getUserPictureUri())
                 .error(R.drawable.profile_picture)
                 .into(imageView_ProfilePictureSide);
        }
    });

1 个答案:

答案 0 :(得分:1)

将OkHttp添加到app模块的gradle构建文件中:

compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.4.0'

Picasso使用HTTP客户端请求进行Disk Cache操作因此,您可以使用Cache-Control创建自己的http请求标头具有属性max-age并创建自己的静态毕加索实例默认毕加索使用Okhttp

Okhttppicasso库均由平方团队提供。

参考文献:How do I use disk caching in Picasso?Github issue about disk cache,@ jake-wharton已回答了两个问题 - > Question1Question2