2014-10-30 66 views
2

我在考慮是否將所有圖像存儲在drawable-nodpi文件夾中,而不是在drawable-ldpi,mdpi等中存儲不同大小的圖像是一種好的做法。可以在drawable-nodpi文件夾中存儲大圖像導致OutOfMemory異常

比方說,我把我所有的圖像drawavle-nodpi。圖像至少爲720x1280大小。我在屏幕分辨率爲240x320的設備上運行我的應用程序。它將如何處理來自drawable-nodpi的圖像。這些圖像會在運行時縮小比例還是會按原樣顯示。它能引起OOM異常嗎?我認爲,如果這些大的圖像加載到內存中,他們可能會導致OOM,因爲小屏幕設備通常有較少的內存和堆大小,但我不知道。它看起來像drawavle-nodpi存儲所有圖像將使開發人員的生活更容易。

+0

它會使用它,因爲它是..是的,它帶來了異形..定位或指定drawable有助於android知道哪個圖像用於特定的屏幕..但如果你不。 ** ** Bomboclat ..lol – Elltz 2014-10-30 13:44:46

+0

什麼用例,這些圖片?另外,你是否知道android資產工作室。 http://romannurik.github.io/AndroidAssetStudio/這個網站可以更輕鬆地處理各種資源大小。 – 2014-10-30 14:05:32

回答

0

這些圖像在運行期間會縮小,還是會顯示爲 。

不,他們不是。它們將以獨立密度的方式加載。他們將顯示爲他們是

Can it cause OOM exceptions? 

當然,這主要取決於兩個因素。前者是設備的(應用)堆,而後者是有多大這些圖像和你保持多少的RAM

0

這將是每個設備每像素的像素,所以它不會調整向上或向下,所以在小型設備中,圖像將會非常龐大​​,而在平板電腦中,圖像會很小。

使用LDPI,MDPI,HDPI,xhdpi等的目的,是圖像在不同的屏幕上合理的類似的尺寸。

關於內存,它可能會導致內存問題的小設備,並沒有在大設備,因爲分配的內存是文件的縮放版本,而不是文件本身,放入nodpi會讓它分配檔案本身,因爲它將是1比1。

+0

PS:如果你想爲你的應用獲得更多的內存,你應該在AndroidManifest.xml中的應用中使用android:largeHeap =「true」;) – Badjano 2014-10-30 13:51:30

+1

根據android docs,它不是一個很好的解決方案,使用android:largeHeap =「true」只是爲了掩蓋內存異常 – 2015-07-20 09:31:52

0

我認爲這個問題將會是資源(圖片)的總內存以及當圖片視圖嘗試顯示該圖片時的性能。根據我的經驗,將較小尺寸的圖像創建爲多屏幕會更具內存和性能。只是提示,你可以使用自動縮放器:https://code.google.com/p/9patch-resizer/

對於例外,我從來沒有得到這種例外,但我認爲如果圖像是非常巨大的非常有可能獲得OOM。

相關問題