LowProfileImageLoader 的思路是将圖檔的Uri都放入到一個隊列中,然後依次周遊這個隊列去請求圖檔資源,下載下傳好後通知UI将流傳回,每當有新UI插入進來後都會喚醒工作線程, 并且我們可以設定工作線程一次可以同時對幾個Uri進行處理,預設是5個。
了解了 LowProfileImageLoader 的思路後,我們依據 LowProfileImageLoader 定制一個簡單的圖檔緩存,即如果我們已經下載下傳過這張圖檔了,我們就把圖檔儲存到本地,等到下次啟動程式的時候,判斷本地是否已經緩存過該圖檔,如果緩存過 該圖檔,就從本地讀取圖檔傳回;如果沒有緩存過該圖檔,則下載下傳完後通知UI,然後将圖檔儲存至本地。
線上程工作的主方法WorkerThreadProc中的請求網絡之前增加判斷,判斷該圖檔是否緩存
如果已經緩存了,直接推入到完成隊列中,也就是準備向UI回調了。
在回調中增加處理,如果沒有緩存的,需要将圖檔進行緩存
下面的方法是判斷圖檔有沒有緩存的
下面的方法是從緩存中讀取圖檔流的
以及将圖檔緩存的方法:
調用方法是這樣的
在XAML中的Image中添加如上的代碼即可,這樣隻要圖檔一被下載下傳,就會被緩存到本地,以便下次使用。
當然你可以加上一個依賴屬性,判斷目前是否啟動緩存。另外一個需要考慮的是,何時删除圖檔緩存,那由你的app決定!
本文轉自xshf12345 51CTO部落格,原文連結:http://blog.51cto.com/alexis/717917,如需轉載請自行聯系原作者