2011-07-04 32 views
1

我正在跟蹤分配的堆內存在我的應用程序上,最大爲15.5MB。這大部分來自位圖。我有一個名爲「drawable」的文件夾,我將所有位圖放入,所以無論屏幕大小如何,所有設備都將加載相同的位圖。測試設備是Desire HD。我的問題是:當一個小屏幕設備運行我的應用程序時,它會分配相同數量的內存嗎? (請記住,我的小屏幕設備沒有更小的位圖)。分配的堆內存和不同大小的繪圖

我懷疑的原因是,無論它被調整大小,它來自同一資源。例如,我發現繪製400 * 800位圖並繪製300 * 600位圖會消耗不同數量的內存,即使我將它們都填充到屏幕上。

如果我爲小屏幕設備使用較小的位圖,我認爲它會分配較少的內存。只是我有300個位圖,我正試圖避免複製和減小300位圖大小的痛苦。

另一個問題,而我在它:我讀的地方,最低的最大堆大小是16MB。這仍然是真的嗎?

回答

0

您的位圖將根據inDensityinTargetDensity自動調整大小。 這當然比具有多個版本的相同位圖要慢,但在你的情況下它可能是最好的選擇。

+0

我知道他們會調整大小。實際上,當我在畫布上繪製它們時,我正在調整它們的大小。問題是:它會在小屏幕設備上消耗更少的內存嗎?我懷疑的原因是,無論它被調整大小,它都來自相同的資源。例如,我發現繪製400 * 800位圖並繪製300 * 600位圖會消耗不同數量的內存,即使我將它們都填充到屏幕上。 – Emiam

+0

當您繪製位圖時調整位圖的大小是一個非常糟糕的主意。如果把它縮小,它很慢並且浪費內存。當你加載它時,你應該調整它的大小,因爲它的大小與你繪製的大小完全相同,並且消耗了繪製所需的大量內存。 – mibollma

+0

當我繪製位圖時,我不調整大小,我調整它們一次,然後繪製。 – Emiam