android 圖片加載框架picasso流程解讀

類圖:


RequestCreator:封裝具體的請求參數,比如是否使用佔位圖、bitmap大小、圖片變換等;

 

Picasso:統一管理資源,RequestHandler(默認有7個,可額外添加)、cache、Dispatcher等;

 

Dispatcher:負責請求的分發,內部新建一個線程使用Handler傳遞消息,主線程和新建線程內部Handler進行消息通信,新建線程再使用線程池執行BitmapHunter來獲取圖片,並指定合適的RequestHandler給BitmapHunter;

 

RequestHandler:負責獲取圖片,其子類有ResourceRequestHandler、ContactsPhotoRequestHandler、MediaStoreRequestHandler、ContentStreamRequestHandler、AssetRequestHandler、FileRequestHandler、NetworkRequestHandler;

 

BitmapHunter:使用合適的RequestHandler來獲取圖片,比如FileRequestHandler、NetworkRequestHandler或者其他的RequestHandler的子類;

 

NetworkRequestHandler:用於加載網絡圖片,如果應用使用了okhttp庫則使用okhttp加載,否則使用UrlConnectionDownloader加載;


具體的加載圖片時序圖:


如果要實現某些定製:

(1)      使用Picasso. Builder做某些定製(圖片格式、網絡下載器、線程庫、內存等),然後調用Picasso. setSingletonInstance將實例設進去;此過程只需執行一次,可放到                 應用初始化時候執行;

(2)      調用Picasso. with(Context context)獲得Picasso實例;

(3)      發起圖片加載請求;


ps:好記性不如爛筆頭;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章