SetBackgroundDrawable 在内存中加载图像吗?

Posted

技术标签:

【中文标题】SetBackgroundDrawable 在内存中加载图像吗?【英文标题】:Do SetBackgroundDrawable load image in memory? 【发布时间】:2013-03-08 00:06:34 【问题描述】:

我正在制作一个android应用程序,我在报告“内存不足异常”时遇到了一些问题,经过网上多次搜索,我发现android:background正在将背景图像加载到内存中。

所以我将删除我的 XML 文件中的所有“android:background”声明,并将其替换为:

    background = new BitmapDrawable(getResources(),ImageFactoring.decodeSampledBitmapFromResource(getResources(), R.drawable.catalogue_button_poeles_bois, mMaxButton_Cheminees.getLayoutParams().width, mMaxButton_Cheminees.getLayoutParams().height));
    mMaxButton_Cheminees.setBackgroundDrawable(background);

在此之前,我想知道“setBackgroundDrawable”是否正在将图片加载到内存中?

【问题讨论】:

【参考方案1】:

当然可以。您在显示器上看到的所有内容都存储在内存中。设置背景后,它会立即加载。从 xml 膨胀或显式设置时。不要使用大于所需的图像作为资源。并尽可能避免使用大型总部图片。

【讨论】:

如果我以良好的缩放比例加载每个图像,它可以减少“内存不足”的问题吗? 最好将图片预缩放并放入 res 文件夹中。您可以为不同的屏幕尺寸或密度设置不同的比例developer.android.com/guide/topics/resources/…

以上是关于SetBackgroundDrawable 在内存中加载图像吗?的主要内容,如果未能解决你的问题,请参考以下文章

警告: [deprecation] View中的setBackgroundDrawable(Drawable)已过时

警告: [deprecation] View中的setBackgroundDrawable(Drawable)已过时

警告: [deprecation] View中的setBackgroundDrawable(Drawable)已过时

来自 url 的 LinearLayout setBackgroundDrawable 位图

PopupWindow为啥要设置setBackgroundDrawable(new BitmapDrawable());

关闭Android弹出窗口并按回键