06-27 10:57:48.420: E/AndroidRuntime(14255): FATAL EXCEPTION: main
06-27 10:57:48.420: E/AndroidRuntime(14255): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@407fc6b8
06-27 10:57:48.420: E/AndroidRuntime(14255): at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
06-27 10:57:48.420: E/AndroidRuntime(14255): at android.graphics.Canvas.drawBitmap(Canvas.java:1044)
06-27 10:57:48.420: E/AndroidRuntime(14255): at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:325)
06-27 10:57:48.420: E/AndroidRuntime(14255): at android.widget.ImageView.onDraw(ImageView.java:872)
etc etc
这是我的缓存:
sLruCache = new LinkedHashMap(capacity / 2, 0.75f, true) { private static final long serialVersionUID = -7282875042976381535L; @Override protected boolean removeEldestEntry(LinkedHashMap.Entry eldest) { if (size() > mCapacity) { return true; } else return false; } public Bitmap remove(Object key) { Bitmap bitmap = super.remove(key); if (bitmap != NULL_BITMAP) { bitmap.recycle(); } return bitmap; }; @Override public void clear() { Set keys = new HashSet(keySet()); for (String key : keys) { Bitmap map = get(key); if (map != NULL_BITMAP) { map.recycle(); } } super.clear(); } };
有什么想法为什么这会失败在Android2.3而不是4.0?
我也有同样的问题。
我必须删除所有bitmap.recycle()调用。有时会导致OutOfMemoryException。
因此,我做了一个这样的黑客:
// when I need to remove bitmap from cache
if (Build.VERSION.SDK_INT < 9 || Build.VERSION.SDK_INT > 10) {
bmp.recycle();
}
问题内容: 我正在创建一个以显示图片网格。选择其中一个时,它应打开一个带有过渡的新活动。 我正在使用Glide库加载图片,并且过渡效果很糟糕,因为它在新活动中重新加载了图片。因此,我必须将其保存在缓存中,然后将其用于过渡。 我有代码,但有时如果图片未加载,则会抛出Canvas RuntimeException。 这是日志: 这是打开其他活动并将图片保存为缓存的代码: 我该怎么做才能解决此问题?提前
我在片段中有一个listview。listview的每一行都有imageview,我正在加载位图图像。我将位图设置为imageview的标记。下次遇到带有非空标记的图像视图时,我会在标记中回收位图并将图像重新加载到其中。这导致崩溃“画布:试图使用回收的位图android.graphics.bitmap”在活动方向更改时崩溃。我不明白为什么会这样。请帮忙。 堆栈跟踪:java.lang.Runtim
我正在使用而不是将背景、边框和/或背景色应用到页面的某个区域(主要是因为需要页面来构建,而不需要。因为我的内容可能会持续几页)。问题是,如果坐标(x=0,y=0)意味着左下角,则图像的位置不会像预期的那样。我还想将画布定位到一个固定的位置,但是似乎不起作用。请参阅附上的原始图像和要定位在{x,y,width,height}={100f,100f,200f,200f}的图像,该图像应该在页面的底部(
5.2.3 在画布上绘图 本节介绍如何在画布上绘制图形。为了完整起见,我们将前面介绍过的首先需要执行的 几条语句合在一起复制如下: >>> from Tkinter import * >>> root = Tk() >>> c = Canvas(root,width=300,height=200,bg='white') >>> c.pack() 如前所述,c 是一个画布对象,而画布对象提供了若干
显示网格 若要在图表画布启用网格,从菜单栏选择“图表”->“显示网格”。 对齐网格 若要在画布对齐对象到网格,从菜单栏选择“图表”->“对齐网格”。 更改图表符号 若要更改图表的符号,从菜单栏选择“图表”->“图表符号”。 【注意】下列选项会根据你所选择的图表类型而有所不同。 选项 描述 默认 Navicat Data Modeler 使用的默认符号样式。 简单 一个简单的符号样式。表、视图或实体
显示网格 若要在图表画布启用网格,从菜单栏选择“查看”->“显示网格”。 对齐网格 若要在画布对齐对象到网格,从菜单栏选择“查看”->“对齐网格”。 更改图表符号 若要更改图表的符号,从菜单栏选择“图表”->“图表符号”。 【注意】下列选项会根据你所选择的图表类型而有所不同。 选项 描述 默认 Navicat Data Modeler 使用的默认符号样式。 简单 一个简单的符号样式。表、视图或实体