浅谈 Glide - BitmapPool 的存储时机 解答 ViewTarget 在同一View显示不同的图片时,总用同一个 Bitmap 引用的原因

掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8

博客:

GitHub : https://github.com/af913337456/

腾讯云专栏: https://cloud.tencent.com/developer/user/1148436/activities

这两天在改造我的私人APP 非ROOT版微信自动回复, 使之可以多开的时候,碰到一个这样的问题。

Glide 在使用默认的Targer方式下,同一个 View 加载不同 URL 图片的时候,返回的 Bitmap 引用地址是一样的,但图片像素不一样。默认的 Target 有 : BitmapImageViewTarget.java,DrawableImageViewTarget.java

默认的方式代码如下:

private Bitmap lastTimeQrCodeBitmap; private void showQrCodeImage(final ImageView i){ if(wechatCoreApi == null) return; Glide.with(context) .load("xxxxxxxxxxxxxxxxxxx") .asBitmap() .override(400,400) .skipMemoryCache(true) .listener( new RequestListener<String, Bitmap>() { @Override public boolean onException(Exception e, String model, Target<Bitmap> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Bitmap resource, String model, Target<Bitmap> target, boolean isFromMemoryCache, boolean isFirstResource) { if(resource != null){ // 这里打印出加载回来的 Bitmap 的内存地址 LogUitls.e("resource ===> "+resource.toString()); lastTimeQrCodeBitmap = resource; } return false; } } ) .into(i); }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdypg.html