一直以來心中有個疑問android:windowSoftInputMode是保存在哪里格嘁,在打開activity就默認設置好了笛求。或者說設置了android:windowSoftInputMode糕簿,他是如何起作用的探入。
首先要從源碼角度分析如何解析AnidroidManifest,
首先Zygote進程孵化出SystemService線程,然后調(diào)動他的main方法懂诗,在main中就會依次調(diào)用系統(tǒng)服務的main蜂嗽,其中就有PackageManagerService,就是調(diào)用PackageManagerService的main殃恒,在main中實例化自己植旧,并且注冊到SystemService。
在構造方法中就會掃描/system/framework离唐, /system/app病附, /vendor/app,/data/app亥鬓,/data/app-private中的apk文件完沪,然后就是解析package中的manifest文件.以上是老羅源碼分析的安裝篇總結。
QQ圖片20180315170918.png
QQ圖片20180315171304.png
QQ圖片20180315171520.png
這樣就找到我們的android:windowSoftInputMode屬性是保存在activity的ActivityInfo中
這里要十分注意這里的activity不是我們用的四大組件的activity庵朝。
QQ圖片20180315172251.png
現(xiàn)在其實就很明朗了吗冤,問題就變成了又厉,系統(tǒng)是如何把保存在我們組件activity中的activityInfor設置給我們每次startActivity中的activity這個上下文。
QQ圖片20180315182415.png
intent就會去packagemangerService拿到ActivityInfo,有了這個段只,ActivityManagerService就可以去ActivityStack啟動activity了