背景:殼工程僅能繼承一個(gè)組件的Application,但可能有多個(gè)組件需要在Application進(jìn)行初始化操作,本文將介紹一種高效低耦合的方法解決這個(gè)問(wèn)題带族。
一、在基礎(chǔ)組件創(chuàng)建接口,可添加Application生命周期的函數(shù)接口(例如onTerminate等)
二、在各個(gè)組件中實(shí)現(xiàn)該接口雅倒,并將需要在Application中初始化的操作在實(shí)現(xiàn)類(lèi)中進(jìn)行。例如:
三弧可、在基礎(chǔ)組件的Application實(shí)現(xiàn)各組件Application初始化操作(反射方法實(shí)現(xiàn))
首先記錄各組件的ApplicationImpl實(shí)現(xiàn)類(lèi)路徑
通過(guò)反射方法找到對(duì)應(yīng)的類(lèi)蔑匣,并調(diào)用接口
最后在oncreate方法調(diào)用modulesApplicationInit()。
當(dāng)然棕诵,也可以在殼工程的Application中new一個(gè)ApplicationImpl實(shí)現(xiàn)類(lèi)的實(shí)例裁良,并依次調(diào)用各個(gè)生命周期。但上篇文章講到Application與Library切換的問(wèn)題年鸳。如果組件由Library切換為Application運(yùn)行模式時(shí)趴久,殼工程將因找不到類(lèi)而報(bào)錯(cuò)丸相。通過(guò)反射方法能有效的避開(kāi)這個(gè)錯(cuò)誤搔确。