2015-01-02 26 views
0

我正在開發一個應用程序,該應用程序顯示我公司的分步過程。每個步驟包含一個圖像,每個活動顯示8到12個圖像。我現在正在運行java.lang.outofmemory。它還列出了一個android.view.InflateException:Binary xml錯誤。我已將圖像大小調整爲360dpi,並且只能在再次出現錯誤之前再拍幾張圖片。我也嘗試增加堆大小,這並沒有改變結果。有另一種方法我應該這樣做嗎?非常感謝。導致錯誤的活動中存在多個圖像

+0

通過這首先,它會幫助你 - http://developer.android.com/training/displaying-bitmaps/load-bitmap.html –

回答

0

您可以縮小圖像,從而減少內存佔用。此外,您可以查看某些圖書館,如picassoUIL,看看他們是否可以幫助您。

0

這裏沒有什麼魔法,我猜imageview是以完全argb模式渲染的,所以8位* 4 *像素數。好多啊!

您的活動如何顯示圖像?

  • 如果他們在列表中,請務必使用回收。 http://developer.android.com/training/improving-layouts/smooth-scrolling.html 您感興趣的ViewHolder

  • 如果您使用的是ViewPager和刷卡左/右,一定要摧毀你的片段,而你是刷卡,這樣就可以在內存中只有3幅影像(1顯示,旁邊有2個)。

  • 如果它沒有這些,也許你將不得不重構你的佈局:(

最後但並非最不重要的,確保您的位圖調整您的具體的屏幕尺寸,如前所說,畢加索爲.fit()提供了一個方便的方法,它將等待imageview被測量,然後調整下載的位圖大小並將其放在imageview中。您甚至不必擔心主線程上的網絡連接,如何精彩!

Picasso.with(getActivity()) 
     .load(imageUrl) 
     .fit() 
     .into(imageView); 
+0

我已經將它們添加到滾動顯示屏 –

+0

好吧,讓你的滾動視圖(和它下面的線性我猜)不關心內存問題。您應該重新考慮您的佈局,以保持良好和未來的發展。 – Mostrapotski

0

這是編碼方法很重要的地方。你如何實現它可能會幫助我們指出內存泄漏。

但是,一般的做法(可能不是很好) 加載所有位圖在一個常量的類。 (只是一次) 無限地提及。

相關問題