glide生命週期管理的原碼其實就在
glide.with(getcontext()) 這個方法裡面
@nonnull
public static requestmanager with(@nonnull context context)
@nonnull
private static requestmanagerretriever getretriever(@nullable context context)
獲取到了乙個請求管理者 requestmanagerretriever,最終是通過工廠模式建立的
在glide.get(context)方法中最後會執行到
initializeglide(...) 這裡
private static void initializeglide(@nonnull context context, @nonnull glidebuilder builder)
一些無關**刪掉,這裡會對glide賦值,而在builder.build(...)方法中,對requestmanagerretriever進行了建立
glide build(@nonnull context context)
刪除無用**,一目了然.最後在new glide()**裡對
requestmanagerretriever 進行了賦值.所以再貼一下之前建立requestmanagerretriever的方法
@nonnull
public static requestmanager with(@nonnull context context)
@nonnull
public requestmanager get(@nonnull context context) else if (context instanceof activity)
}}
最後通過requestmanagerretriever.get(...)方法進行了了建立乙個無ui的fragment來進行生命週期的管理,這裡只分析fragmentactivity,其它的都是一樣的道理.先貼**
@nonnull
public requestmanager get(@nonnull fragmentactivity activity) else
}
首先獲取到fragmentmanager管理者,再通過 supportfragmentget(...)方法來獲取到requestmanager類,看**的注釋
@nonnull
private requestmanager supportfragmentget(
@nonnull context context,
@nonnull fragmentmanager fm,
@nullable fragment parenthint,
boolean isparentvisible)
return requestmanager;//最後返回
}
先來看看requestmanager的構造方法,這裡將生命週期監聽加入進去,並也新增了網路連線監聽和請求監聽等,所以glidle的生命週期管理最後也就是在requestmanager類裡面來管理的.
requestmanager( glide glide,lifecycle lifecycle, requestmanagertreenode treenode,requesttracker requesttracker,
connectivitymonito***ctory factory,context context) else
lifecycle.addlistener(connectivitymonitor);
setrequestoptions(glide.getglidecontext().getdefaultrequestoptions());
glide.registerrequestmanager(this);
}
再來看看建立fragment的**
@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;
}
Vue生命週期解析
生命週期所有階段 建立 beforemount 注意 這裡進行虛擬的dom變成真實的dom資料 mounted 最早在這裡渲染的變數被賦值了,最遲在這裡做資料請求 要和第三方的元件庫進行結合的時候,我們要放在mounted裡面 更新 注意 資料在mounted裡進行變化,在這裡的資料都是更新後的資料...
vue生命週期淺解析
每個vue例項從建立到銷毀都有乙個生命週期,理解生命週中每個鉤子的意義可以幫助我們快速理解使用vue 下圖源自vue官網 1.beforecreated 建立前 vue例項化以後首先執行beforecreated鉤子,該鉤子函式在資料觀測和事件配置之前被呼叫,所以無法訪問例項中的資料和方法 befo...
Vue的生命週期解析
1.每當我們新建乙個vue的時候,此時vue的生命週期就正式開始了 2.每當我們引入vue的包的時候,就自動引入new vue 3.每當我們引入resource包的時候,就會自動引入this.http.put,get等等 請求 beforecreate 該方法執行的時候資料都還沒有初始化 creat...