面对"尝试使用回收的位图"使用XML作为drawable时出现异常

时间:2016-08-05 11:00:29

标签: android android-layout android-bitmap

我尝试将xml文件设置为netsh winhttp reset proxy的背景图片。为此,我必须将xml转换为drawable。

这就是我所做的......

RelativeLayout

这些是我得到的错误。

    RelativeLayout content = (RelativeLayout) findViewById(R.id.background);
    // "content" is the xml file (which is currently displayed), that I want to use as the background image.
    content.setDrawingCacheEnabled(true);
    Bitmap bitmap = content.getDrawingCache();
    content.setDrawingCacheEnabled(false);
    Drawable d = new BitmapDrawable(getResources(), bitmap);

    // Now I'm changing layouts to the one that has the Relative Layout of which I want to add the xml/drawable background.
    mvf.setDisplayedChild(0);

    // The layout of which I want to add the xml/drawable background.
    (findViewById(R.id.root)).setBackground(d);

2 个答案:

答案 0 :(得分:2)

这里bitmap = content.getDrawingCache()你得到的不是新的位图,而是相同的位图对象,drawingCache,它是指向对象的指针。未来某个地方,drawingCache会被回收,你的位图对象也会被回收。

我认为你必须复制绘图缓存。像

这样的东西
Bitmap bitmap = content.getDrawingCache().copy(bitmapConfig, false);

Bitmap.copy() documentation

答案 1 :(得分:0)

 content.setDrawingCacheEnabled(false);

应在从其父级删除R.id.root后调用它。这种方式可以节省内存。