1.with函數能夠傳入activity,fragment,context,傳入的參數會決定glide加載圖片的生命週期,當activity,fragment被銷燬的時候,加載就會中止網絡
with函數首先判斷了是否在主線程中使用,若是不在主線程中使用,那麼傳入的參數就至關於applicationContext,在主線程中使用,就要判斷是否是applicationContext,若是是,則生命週期與application 相同,application被銷魂則中止加載圖片,若是不是applicationContext,就會加入一個隱藏的fragment,glide感受這個隱藏的fragment來判斷生命週期;隱藏的fragment 是supportRequestManagerFragment,用hashMap進行保存,key是fragmentManager,value是supportRequestManagerFragmentapp
2.load能夠加載不少圖片的來源,如網址,本地文件,二進制流,uri對象等,中有一個drawableTypeRequest 對象,其中提供了asbitmap和asGif;ide
load先是返回了一個drawableTypeRequest對象,而後利用drawbaleTypeRequest的load方法,獲取drawableRequestBuilder對象,在這個對象裏面,有不少配置函數,如佔位圖,diskcachestrategy,可是asbitmap和asgif是在drawablerequestBuilder裏面,這個對象有個父類DrawableRequestBuilder,函數
3.into函數在bitmapTypeRequest和GifTypeRequest,還有drawableTypeRequest中都有實現,不過最終是調用到drawableRequestBuilder的into,而後又調用到genericRequestBuilder裏面,ui
咱們在調用glide中配置的全部內容如,error,placeholder等都會封裝到genericRequest中,當model(即load傳入的圖片來源爲空時,會去請求錯誤的佔位圖,若是不存在錯誤的佔位圖,則會加載loading展位圖)(load中傳入的參數 在這裏調用的時候是以model的類型進行的,是如何作到?)spa
這裏的流程是這樣的,首先判斷model(load傳入的參數)是否爲空,若爲空,走異常,異常處理機制是首先獲取error圖片,若是沒有,就獲取loading佔位圖;若是model不爲空,在加載以前,就會加載loading佔位圖;線程
glide網絡鏈接超時時間2500ms,讀超時時間2500ms對象