android:windowSoftInputMode引发的思考
2018-03-15 本文已影响0人
小凡帅哥
一直以来心中有个疑问android:windowSoftInputMode是保存在哪里,在打开activity就默认设置好了。或者说设置了android:windowSoftInputMode,他是如何起作用的。
首先要从源码角度分析如何解析AnidroidManifest,
首先Zygote进程孵化出SystemService线程,然后调动他的main方法,在main中就会依次调用系统服务的main,其中就有PackageManagerService,就是调用PackageManagerService的main,在main中实例化自己,并且注册到SystemService。
在构造方法中就会扫描/system/framework, /system/app, /vendor/app,/data/app,/data/app-private中的apk文件,然后就是解析package中的manifest文件.以上是老罗源码分析的安装篇总结。



这样就找到我们的android:windowSoftInputMode属性是保存在activity的ActivityInfo中
这里要十分注意这里的activity不是我们用的四大组件的activity。

现在其实就很明朗了,问题就变成了,系统是如何把保存在我们组件activity中的activityInfor设置给我们每次startActivity中的activity这个上下文。

intent就会去packagemangerService拿到ActivityInfo,有了这个,ActivityManagerService就可以去ActivityStack启动activity了