類圖:
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:好記性不如爛筆頭;