使用自定义下载程序

时间:2015-08-20 14:46:36

标签: android picasso

在我的应用程序中,我使用自定义下载程序下载图像,因为服务器在请求标头中需要额外的授权。我正在尝试在离线模式下加载下载的图像,但是当我使用这个自定义下载程序时Picasso没有加载图像。有人可以帮忙吗?

OkHttpClient picassoClient = new OkHttpClient();

    picassoClient.interceptors().add(new Interceptor() {
                                         @Override
                                         public Response intercept(Chain chain) throws IOException {
                                             Request newRequest = chain.request().newBuilder()
                                                     .addHeader(RestUtils.HEADER, hash)
                                                     .build();
                                             return chain.proceed(newRequest);
                                         }
                                     }

    );

    Picasso picasso = new Picasso.Builder(mContext)
            .downloader(new OkHttpDownloader(picassoClient)).build();

    picasso.setIndicatorsEnabled(true);
    picasso.invalidate(RestUtils.getUrl(url));

    if (DeviceUtility.isOnline(mContext)) {
        picasso.load(RestUtils.getUrl(url))
                .networkPolicy(
                        DeviceUtility.isOnline(mContext) ?
                                NetworkPolicy.NO_CACHE : NetworkPolicy.OFFLINE)
                .resize(200, 200)
                .centerCrop()
                .into(viewHolder.mImgvPicture);
    } else {
        picasso.load(RestUtils.getUrl(url))
                .networkPolicy(
                        DeviceUtility.isOnline(mContext) ?
                                NetworkPolicy.NO_CACHE : NetworkPolicy.OFFLINE)
                .resize(200, 200)
                .centerCrop()
                .into(viewHolder.mImgvPicture);
    }

1 个答案:

答案 0 :(得分:0)

在从缓存中获取URL之前,您将使URL无效:

picasso.invalidate(RestUtils.getUrl(url));

仅在设备已连接时尝试使其无效。