作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须释放位图占用的内存。因此,当我的 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/
命令 svn status 返回如下内容: ? SomeClient\BUTCHERED.docx M SomeClient\Development notes.txt ?
我是一名优秀的程序员,十分优秀!