如果AttributeSet是接口,那么外部(具体)从xml读取/存储值在哪里?即具有AttributeSet委派给它的存储/检索值的具体类是什么?我正在寻找源代码,但我仍然找不到魔术发生的地方。谢谢大家的帮助!

最佳答案

这里跳过一些细节,但是您使用的AttributeSet通常是从XmlResourceParser获得的AssetManager,该类负责管理Android应用程序资源,包括AAPT编译的XML。资产管理器使用XmlBlock.Parser创建一个XmlBlock.newParser()来解析表示XML文件的特定资源块。

XmlBlock.Parser实现XmlResourceParser并调用本机代码来解析AAPT编译的XML。

XmlResourceParser扩展了XmlPullParserAttributeSet

07-27 16:06