【问题标题】:Showing image with Picasso custom Downloaded uses a lot of memory显示带有毕加索自定义下载的图像会占用大量内存
【发布时间】:2017-11-21 16:13:27
【问题描述】:

我正在尝试使用自定义 Picasso 下载器加载的图像填充 RecyclerView 项目,我注意到应用程序正在使用大量内存并且滚动不流畅。图像是从 obb 扩展 zip 文件加载的。这是我下载的自定义:

public class VirtualTourDownloader implements Downloader {

    private final ZipResourceFile mZipResourceFile;
    private InputStream mInputStream;

    public VirtualTourDownloader(ZipResourceFile zipResourceFile) {
        mZipResourceFile = zipResourceFile;
    }

    @Override
    public Response load(Uri uri, int networkPolicy) throws IOException {
        String path = uri.getPath();
        String idStr = "virtual/" + path.substring(path.lastIndexOf('/') + 1);
        mInputStream = mZipResourceFile.getInputStream(idStr);
        return new Response(mInputStream, false, mInputStream.available());
    }

    @Override
    public void shutdown() {
        try {
            mInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

带有自定义下载器的毕加索

适配器内部的初始化

Picasso.Builder builder = new Picasso.Builder(mContext).downloader(new VirtualTourDownloader(expansionFile));
mPicasso = builder.build();

onBind 将图像加载到 ImageView 中

mPicasso.load(uri).into(image);

【问题讨论】:

  • 你可以调整大小然后使用调整大小方法检查你的滚动,例如:mPicasso.load(uri).resize(200,200).centerCrop().into(image);
  • Vivek,感谢您的回复。调整图像大小解决了我的问题。非常感谢

标签: android picasso expansion


【解决方案1】:

我认为你应该使用 Glide 库。

好处是: 1.它会消耗更少的内存。 2. Glide 的默认位图格式设置为 RGB_565,所以画质会比 Picasso 差。

3.Glide 按尺寸创建缓存图像,而 Picasso 保存完整图像并对其进行处理。表示如果您尝试将图像(500 x 500)加载到 imageView(200 x 200)中。 Glide 会下载全图,然后将其调整为 200 x 200,然后缓存并加载到 imageView,而 Picasso 会下载全图,然后缓存全图,然后将其调整为 200 x 200 并加载到 imageView。

下次当你请求相同的图像(500 x 500) 加载到 imageView(100 x 100) 时,Glide 将再次下载完整的图像(500 x 500) 然后将其调整为 100 x 100 然后缓存并加载到 imageView . Picasso 与 Glide 不同,它会拾取缓存的全尺寸图像并调整大小并将其加载到 imageView(100 x 100) 中。 Picasso 不再下载相同的图像。

此内容取自(http://tutorialwing.com/android-glide-library-tutorial-example/)

使用 Glide 在你的 Gradle 文件中添加这个依赖项

dependencies {
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.android.support:support-v4:23.4.0'
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多