天天看點

從設計到實作,一步步教你實作Android-Universal-ImageLoader-序

轉載請标明出處,本文出自:chaossss的部落格

Android-Universal-ImageLoader Github 位址
引言:在這段時間裡,我鞏固了 Java 的基礎知識,學習了非常多有關架構和設計模式的知識,也閱讀了許多 Android 架構層的源碼,本着“學以緻用”的思想,我決定在接下來的時間裡分析 Android 各個方面最常用的庫。有關這個系列博文的分析思路大緻如下:将自己投入到開發庫的實際場景中思考架構和設計,一步一步地将整個庫還原。一方面,我把這系列博文看作這段時間所學習到知識的總結;另一方面,我希望不僅僅進行翻譯,為大家提供學習資料,還能由自己的知識儲備去生産出幹貨分享給大家。希望大家能在這系列博文中得到自己想要的

Android-Universal-ImageLoader 簡介

Android-Universal-ImageLoader 是 Github 上一個有關圖檔加載的開源項目,作者是 nostra13,這個項目到今天已經累積了 8881 star,4167 fork 了,可以說是 Github 在 Android 領域中一個相當經典的庫。

Tip:下面将把 Android-Universal-ImageLoader 簡稱為 AUI。

nostra13 希望通過 AUI 為 Android 開發者提供高效、靈活、高度定制的圖檔顯示、緩存、加載三個方面的功能,AUI 為開發者提供特定的類對 AUI 進行配置,自主選擇滿足需求的圖檔加載類;此外,AUI 優秀的項目架構使開發者能夠在 AUI 的基礎上繼續拓展。

總的來說,AUI 是一個使用場景非常廣泛的圖檔加載庫,但其性能并不能說是最好的。(例如 Fresco 在大量讀取、顯示圖檔的使用場景中性能就比 AUI 要好)

博文介紹

《從設計到實作,一步步教你實作Android-Universal-ImageLoader》系列博文将有七篇,每一篇博文的内容暫定如下:

序:序就是這篇博文啦,簡要介紹決定寫這系列博文的動機,然後簡要介紹 AUI 和本系列博文的寫作思路,以及每一篇對應的概要。

part1:分析 AUI 的 Cache 子產品,學習 AUI 是如何實作和設計記憶體緩存和本地緩存兩大功能類,以及學習對應具體實作類的一些知識。

part2:簡要學習 AUI 如何封裝庫中常用的工具類。

part3:分析 AUI 中的圖檔顯示子產品,了解 AUI 如何實作解碼、加載、顯示功能。

part4:分析 AUI 中的輔助類,了解 AUI 如何實作類間低耦合、高内聚。

part5:剖析 AUI 中的核心類。

碎碎念

博文理論上每周會更新一篇,如果忙的話可能會拖沓一些,如果哪裡說的有錯誤的話希望大家在評論區和我交流哈~