gpt4 book ai didi

android - 如何回收位图并在以后再次使用它?

转载 作者:行者123 更新时间:2023-11-29 22:03:28 25 4
gpt4 key购买 nike

我必须释放位图占用的内存。因此,当我的 Activity 完成时,我将对所有这些调用 recycle()

这些位图总是在可绘制对象中使用,作为背景属性或来源(ImageView 的情况)属性。

但问题是,当稍后另一个 Activity 的 View 也使用这些位图时,它会显示

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap.

我能做什么,我不能将位图保存在内存中,因为可能用户在稍后的某个时间启动了一个使用它们的 Activity 。我如何告诉位图释放内存并且以后可以再次使用?

最佳答案

解决方案是使用这个初始化位图和 View :

Bitmap b = BitmapFactory.decodeResource(resources, R.drawable.mybitmap);
view.setBackgroundDrawable(new BitmapDrawable(b));

虽然这不适用于 XML 位图。但是应该可以从 View 中检索位图。

将位图实例放在内存中,可以对其调用 recycle() 以立即释放内存。

并且回收位图之前,必须确保它不再被任何 View 引用 - 将可绘制对象/ View 的引用设置为空。否则会抛出异常。为了做到这一点,有必要跟踪引用位图的 View ,并在回收之前清空所有引用。

所以我的实际问题不是重用位图。问题是在 View 仍引用位图时回收位图。

关于android - 如何回收位图并在以后再次使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com