2012-06-09 63 views
2

我的問題涉及內存,我有一個Web服務提供給我一個Url列表。每個網址對應一個大圖片。我的移動應用程序必須解析Web服務提供的xml,而不是在GridView中顯示這些圖像。我試了好幾種功能,以顯示圖像,如:在GridView中加載多個大圖像的最佳方式

  • 多線程

  • 延遲加載

  • 縮小圖像尺寸使用inSampleSize(這會導致我的應用程序需要太多長)

我應該爲每個大圖像添加一個縮略圖圖像,並讓web服務返回給我所有縮略圖的列表,然後向用戶顯示這些縮略圖,如果他點擊了其中一個比我必須在一個單獨的視圖中顯示大圖像,我有這個想法,因爲我注意到當我顯示一個圖像,我沒有得到一個outofMemory異常!

這是一個可靠的解決方案有沒有更好的方法

+0

我從本地圖像有這個問題。我不得不從可繪製文件夾中加載很多圖像。我還調整了縮略圖的大小,但是尋找更好的方式來在本地滾動加載圖像。你知道什麼是最好的解決方案嗎? – Kenji

+0

我對本地圖像有這個問題。有沒有一種很好的方式來處理像Drawable文件夾加載資源上的圖像?謝謝 – Kenji

回答

5

歡迎來到Android上最難的問題之一。首先我會從reading this new documentation google wrote on how to handle bitmaps開始。它不是一個輕讀,但你可能需要閱讀它一路通過。它只有幾個星期的時間,所以你可能沒有看到它。它詳細介紹了您提到的許多內容,如多線程,延遲加載和下采樣。他們還建議使用圖像緩存。

下載每個圖像的大圖像,然後下采樣將是非常低效的。首先下載的大小比需要的大。其次,您需要將其加載到內存中以執行下采樣,第三次下采樣速度稍慢。

我想讓web api返回一張縮略圖網址列表和完整圖像網址,您可以在屏幕上查看時使用這個縮略圖並使用緩存讓它們保持一段時間。確保你下載縮略圖的大小。然後我會在用戶點擊圖像時下載完整圖像,並在下載完成圖像後在下載時對其進行採樣,然後再顯示圖像。

+0

有沒有一種很好的方式來處理資源上的圖像像Drawable文件夾加載?謝謝 – Kenji

+0

由於我寫了這麼多改變了。現在有幾個非常好的圖書館會爲你做這項工作。我強烈建議使用Picasso http://square.github.io/picasso/手動執行此操作。它的說明會告訴你如何處理加載drawable。 –

+0

它的工作原理。這裏是你的觀點。 :)但一個問題是它的內存使用率。當我使用普通方式加載drawable時,它最終消耗20mb,但使用Picasso時,它會消耗26mb。如何管理它? – Kenji

相關問題