2014-01-14 53 views
2

我有一個佈局,我使用單個線程在運行時添加了ImageView(約13)。當我加載超過7或8張圖像(970像素x 970像素,270kb)時,應用程序崩潰會顯示內存不足錯誤。現在,當我加載相同的圖像,而不是選擇13個不同的圖像時,它顯示正常。而且,當我縮小圖像的大小(16px x 16px,770bytes)時,它顯示正常。Android從資源加載圖像時出現錯誤

那麼有沒有人知道加載圖像時允許的最大內存?解決此問題的最佳方法是什麼?很明顯,人們之前遇到過這個問題,並且由於加載圖像庫等而解決了這個問題。將這些圖像加載到應用程序中的最佳方式是什麼?任何幫助將不勝感激。

以下是我如何從資源中讀取圖像。這是在我正在讀取的對象列表中的「drawableName」循環內。這是所有的內螺紋的onPostExecute(即新的AsyncTask())

String defType = "drawable"; 
String defPackage = this.getPackageName(); 
int resourceId = Activity.this.getResources().getIdentifier(drawableName, defType, defPackage); 
((ImageView) view.findViewById(R.id.iv_image)).setImageResource(resourceId); 
+0

http://stackoverflow.com/questions/16765899/out-of-memory-error-with-bitmap/16766123#16766123。檢查這是否有幫助 – Raghunandan

+0

這些圖像是相當大的... – njzk2

+0

謝謝你們,我會檢查出鏈接Raghunandan。 njzk2,您認爲圖像在所有屏幕尺寸上兼容的平均尺寸是多少?假設實際大小並沒有太大的差別,因爲您加載的圖像數量反映了這一點(例如,加載100個小圖像可能與加載10個大圖像相同)。 –

回答

4

我會通過加載僅將要顯示的圖像,並將其調整到一個適當的大小嚐試。在Android文檔中有關於有效顯示圖像的指南read here

您也可以結算畢加索圖書館http://square.github.io/picasso/至於我覺得這些類型的任務非常有用。

6

解決您的問題的最快方法是使用傑克沃頓的畢加索圖書館。它能夠在一行代碼加載您的形象和管理緩存,轉換,下載等。

這裏是下載庫的鏈接:http://square.github.io/picasso/

所有你需要的代碼是:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

它應該像一個魅力:)

+0

得到了解決方案,我使用這個庫250圖像加載從水庫快速方式...!謝謝 –

相關問題