android – ImageView:如果ImageView不可见,则自动回收位图(在ScrollView中)

android – ImageView:如果ImageView不可见,则自动回收位图(在ScrollView中),第1张

概述所以,我已经看了一段时间的 ImageView源代码,但我还没有想出一个钩子来做到这一点. 问题是:在ScrollView中有30个400×800图像(图像数量是可变的).由于它们完全适合屏幕,因此每个将占用1.3 MB的RAM. 我想要的是:能够为ScrollView中当前可见的ImageView加载/卸载位图.如果用户滚动并且位图不再可见(在距离阈值内),则应该回收位图,以便内存可以被同一Sc 所以,我已经看了一段时间的 ImageVIEw源代码,但我还没有想出一个钩子来做到这一点.

问题是:在ScrollVIEw中有30个400×800图像(图像数量是可变的).由于它们完全适合屏幕,因此每个将占用1.3 MB的RAM.

我想要的是:能够为ScrollVIEw中当前可见的ImageVIEw加载/卸载位图.如果用户滚动并且位图不再可见(在距离阈值内),则应该回收位图,以便内存可以被同一ScrollVIEw中的其他位图使用.我正在进行下采样以及所有这些,所以不用担心.如果你只通过扩展ImageVIEw来实现这一点(如果可能的话我想不要乱用ScrollVIEw).

简介:我可以在ImageVIEw变得可见之后加载图像(使用聪明的技巧),但我不知道何时卸载它们.

注意:由于其他可用性原因,我无法使用ListVIEw执行此 *** 作.

解决方法 如果要回收位图,请调用此方法.
public static voID recycleImagesFromVIEw(VIEw vIEw) {            if(vIEw instanceof ImageVIEw)            {                Drawable drawable = ((ImageVIEw)vIEw).getDrawable();                if(drawable instanceof BitmapDrawable)                {                    BitmapDrawable bitmapDrawable = (BitmapDrawable)drawable;                    bitmapDrawable.getBitmap().recycle();                }            }            if (vIEw instanceof VIEwGroup) {                for (int i = 0; i < ((VIEwGroup) vIEw).getChildCount(); i++) {                    recycleImagesFromVIEw(((VIEwGroup) vIEw).getChildAt(i));                }            }        }
总结

以上是内存溢出为你收集整理的android – ImageView:如果ImageView不可见,则自动回收位图(在ScrollView中)全部内容,希望文章能够帮你解决android – ImageView:如果ImageView不可见,则自动回收位图(在ScrollView中)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139171.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存