freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

手動(dòng)實(shí)現(xiàn)ioc框架-資料下載頁

2025-06-25 07:05本頁面
  

【正文】 new ActivityProvider()。 private static final ViewProvider PROVIDER_VIEW = new ViewProvider()。 /** * 從activity 注入 * @param activity */ public static void inject(Activity activity) { inject(activity, activity, PROVIDER_ACTIVITY)。 } /** * 從View 中查找 * @param host * @param view */ public static void inject(Object host, View view) { // for inject(host, view, PROVIDER_VIEW)。 } // 注入的最終調(diào)用 public static void inject(Object host, Object source, Provider provider) { Class? clazz = ()。 String proxyClassFullName = ()+$$Finder。// 根據(jù)傳入的對(duì)象獲取輔助類的全路徑名 Class? proxyClazz = null。 try { proxyClazz = (proxyClassFullName)。// 獲取輔助類的class Finder viewInjector = (Finder) ()。 // 生成輔助類的實(shí)例 (host, source, provider)。 // 調(diào)用輔助類的inject()方法 }catch (Exception e) { ()。 } }}可以看到,最終的inject()實(shí)現(xiàn)方法。因?yàn)樵谏奢o助類的時(shí)候,我們是根據(jù)類名+$$finder的固定寫法,所以很容易的通過class的形式生成輔助類的實(shí)例化,并調(diào)用inject方法。在這里出現(xiàn)了Finder對(duì)象,他實(shí)際是我們定義的接口public interface FinderT { void inject(T host, Object source, Provider provider)。}輔助類在生成代碼時(shí),統(tǒng)一繼承該接口,便于調(diào)用inject()方法(多態(tài)).注意,(host, source, provider)。方法,在看一下生成的輔助類public class MainActivity$$Finder implements FinderMainActivity { // 看這里,有沒有發(fā)現(xiàn)什么 public void inject(MainActivity host, Object source, Provider provider) { = (TextView)((TextView)(source, 2131492945))。 }}有沒有感覺到一種抓住了什么的感覺,再仔細(xì)看一下ViewFinder類,提供了兩個(gè)inject()方法,分別是從Activity中注入,一種是從View中注入,為什么從View中注入,我們需要多傳入一個(gè)Object對(duì)象呢?仔細(xì)觀察發(fā)現(xiàn):host其實(shí)是我們成員變量所在的類source:findViewById操作的類,provider: 對(duì)findViewById的一層封住,便于處理Activity和View兩種情況。最終,整個(gè)框架到這里就完全的串聯(lián)起來了最后的最后,我們需要添加iocpiler到我們的編譯時(shí)期,這時(shí)需要借助gradle的一個(gè)腳本androidapt,用以達(dá)到在編譯期添加工程依賴。詳細(xì)過程不寫了,可以看我的github上的源碼。github地址已在文章頂部貼出??偨Y(jié)通過以上的流程可以發(fā)現(xiàn),我們?cè)诰幾g期生成輔助類用以完成findViewById的操作。那么根據(jù)這個(gè)原理,實(shí)現(xiàn)setOnClickListener等,基本上和這些事類似的。甚至基于這種思路,我們完全可以做更多的事情。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1