原始碼閱讀 Glide原始碼閱讀之with方法(一)

2021-09-03 00:07:10 字數 3167 閱讀 8952

前言:本篇基於4.8.0版本

【原始碼閱讀】glide原始碼閱讀之with方法(一)

【原始碼閱讀】glide原始碼閱讀之load方法(二)

【原始碼閱讀】glide原始碼閱讀之into方法(三)

大多數情況下,我們使用glide 就一句**

但是這一句**裡面蘊含著成噸的**!

with方法有以下幾個過載方法

public

static requestmanager with

(@nonnull context context)

public

static requestmanager with

(@nonnull activity activity)

public

static requestmanager with

(@nonnull fragmentactivity activity)

public

static requestmanager with

(@nonnull fragment fragment)

public

static requestmanager with

(public

static requestmanager with

(@nonnull view view)

其中,getretriever返回的是個requestmanagerretriever物件

private

static requestmanagerretriever getretriever

(@nullable context context)

@nonnull

(@nonnull context context)}}

}

public requestmanager get

(@nonnull context context)

else

if(util.

isonmainthread()

&&!(context instanceof))

else

if(context instanceof

activity

)else

if(context instanceof)}

return

(context)

;}

@nonnull

private supportrequestmanagerfragment getsupportrequestmanagerfragment

(@nonnull

final fragmentmanager fm,

@nullable fragment parenthint,

boolean isparentvisible)

pendingsupportrequestmanagerfragments.

put(fm, current)

; fm.

begintransaction()

.add

(current, fragment_tag)

.commitallowingstateloss()

; handler.

obtainmessage

(id_remove_support_fragment_manager, fm)

.sendtotarget()

;}}return current;

}

@nonnull

private requestmanagerfragment getrequestmanagerfragment

(@nonnull

boolean isparentvisible)

pendingrequestmanagerfragments.

put(fm, current)

; fm.

begintransaction()

.add

(current, fragment_tag)

.commitallowingstateloss()

; handler.

obtainmessage

(id_remove_fragment_manager, fm)

.sendtotarget()

;}}return current;

}

supportrequestmanagerfragment中部分**

@override

public

void

onattach

(context context)

catch

(illegalstateexception e)}}

@override

public

void

ondetach()

@override

public

void

onstart()

@override

public

void

onstop()

@override

public

void

ondestroy()

activityfragmentlifecycle相關**

@override

public

void

addlistener

(@nonnull lifecyclelistener listener)

else

if(isstarted)

else

}@override

public

void

removelistener

(@nonnull lifecyclelistener listener)

void

onstart()

}void

onstop()

}void

ondestroy()

}

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

global原始碼閱讀

2 編譯安裝 configure prefix your install dir make make install 3 使用時注意先gtags後htags,如果直接執行htags會提示找不到gtags。如果是在普通使用者許可權安裝global,比如 prefix work yourname usr...