可能存在内存泄漏

作者: LionHere创建于 2019年4月27日更新于 2019年5月6日
标签question

遇到可能出现内存泄漏的情况,或者是使用不当吗?我的代码如下:

java
frequently_called_binding_function (My_GifImageView_Pool pool) {
    GifImageView gifImageView= pool.get();

    gifImageView.setImageBitmap(a small size bitmap as a thumbnail);

    runOnWorkerThread(() -> {
        ParcelFileDescriptor pfd = download a gif from server();
        runOnUiThread(() -> {
            GifDrawable gifDrawable = new GifDrawable(pfd.getFileDescriptor());
            gifImageView.setImageDrawable(gifDrawable);
            pfd.close();
        }
    });
}

这个池中有固定数量的 GifImageView, 并且从不重新创建新的 GifImageView。 运行此绑定函数数十次后, 导致原生堆从 30MB 增加到 ~200MB, 而强制回收也无法解决问题。

内容来源: koral--/android-gif-drawable