2016-09-20 58 views
0

我正在構建一個Android應用程序,它通過Node.js服務器連接到Amazon RDS數據庫。在Android上處理圖片下載的正確方法

我的數據庫包含一定數量的項目表。此表中的每一行都包含項目的ID,名稱,簡短描述以及指向圖像的鏈接。每當用戶打開應用程序時,他們首先看到的是卡片視圖中的這些數據。

我的問題是這樣的:什麼是加載圖像(和其他數據)的正確方法?每當用戶打開應用程序時,我是否會一次又一次地加載它?我是否以某種方式緩存它,以便下次不必再次下載圖像?如果我緩存圖像,如果URL的內容發生變化,現在會發生什麼情況,並且現在包含不同的圖像?我是否檢查校驗和,下載並再次緩存圖像?那麼其他數據呢?如果是文本,每次用戶打開應用程序時是否加載它?

此外,執行下載本身的最佳方法是什麼?我使用裝載機?一個AsyncTask?一些其他類型的線程?我是多線程編程的新手,所以任何信息都可以幫到你。 謝謝!

+0

Android中的默認值是使用'HttpUrlConnection'在AsyncTask中加載數據。然後,創建一個單獨的任務,在需要時獲取圖像url並加載圖像。我建議查看[Retrofit](http://square.github.io/retrofit/)來調用你的API和[Picasso](http://square.github.io/picasso/)獲取來自URL的圖像但是,因爲它們允許您避免編寫這些AsyncTasks的痛苦。 – Weava

+0

檢查幾個庫可以讓緩存變得容易,如果你打算在自己的環境中執行它,你需要處理很多事情,所以更好地使用現有的庫http://stackoverflow.com/questions/19995007 /本地圖像緩存溶液換機器人平方畢加索-VS-通用圖像載 – surya

回答

1

取決於你解決問題。我可以推薦兩個普通的庫,它們簡單可靠。

Picasso : 

http://square.github.io/picasso/

Glide : 

https://github.com/bumptech/glide

你甚至可以自己做到這一點通過使用默認網絡和解碼流。或者使用UniversalImageLoader,但我認爲使用Picasso或Glide是最好的解決方案。

0

我想如果你擔心圖片緩存,那麼你可能會去Glide

但是,如果你擔心圖像質量,那麼你可能會去Picasso

我更喜歡使用Glide。爲了更好地區分,你可以看看here