开发过程中不禁对于android的架构设计会有一点点想法,但是总是纳闷匆匆一想,思考的广度深度都十分有限,所以,纪录一下,看能不能梳理出人家的思路,一家之言,难免才疏学浅,望大家指正。
先聊聊他的配置文件,主要是视图相关的配置,在res目录下。
1、解耦:视图作为配置文件独立处理,和代码完全解耦,可以独立应对复杂的界面布局。
2、解析:xml书写的布局文件最终还是要转化成代码来运行,怎么转化呢,在layoutinflate中,我们发现,是通过反射来做的。是啊,一个纯文本的东西要new出一个对象,不 通过反射,你还想怎样,貌似也可以通过编号来解决,一个类型的view一个编号,找到编号就new对应的activity,编号如果由使用的人指定,难免使用起来麻烦,如 果在内部指定,内部需要维护一个已知view类型标签的列表,这无疑对扩展性有些要求。所以,通过直接反射是最好的,但是反射效率不高,系统内部不是做了优化 么,我看有了缓存的处理。另外,关于各种各样的view有不同的属性,android采用了使用数据结构直接保存属性,构造的时候,一次传入,由各界面自己来解析。
3、扩展性:对于新添加的view,或者属性,怎么办呢,原来layoutinflate是唯一的,只能通过congtxt的getService来获取,里面提供了注入接口,可以外部注入。android后续 版本都是通过这样的方式兼容,比如appcompat-v7