2013-03-19 76 views
0

我正在做一个Android应用程序,并且我在报告中出现了一些与“内存异常”有关的问题,经过网上的很多搜索之后,我发现android:background正在将内存中的背景图像加载。SetBackgroundDrawable在内存中加载图像?

,所以我会删除我所有的“机器人:背景”的声明在我的XML文件,并替换:

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充气还是明确设置。不要将大于需要的图像用作资源。尽可能避免大型HQ图像。

+0

它可以减少“内存不足”的麻烦,如果我加载每个图像在一个好的缩放? – theMouk 2013-03-19 10:57:34

+0

最好是预先缩放图像并将其放入res文件夹中。您可以针对不同的屏幕尺寸或密度制定不同的比例尺http://developer.android.com/guide/topics/resources/providing-resources.html – 2013-03-19 12:08:33