android工程中的R.java文件

注:本人也是初学android,以下只是学习过程中的一些猜测与总结,至于浏览的人希望不是误人子弟

 

R.java资源文件
android工程所有资源信息(组件、图片、字符等等)都是由HashMap<Integer,Object>来存储的
key值就是R.java中的静态变量值
value就是相对应的各种对象信息(组件、图片、字符等等)
当工程被载入时,所有资源都被加载到HashMap中去(类似Spring将所有Bean放入HashMap中一样)
这样我们就可通过key值定位到相应的组件
资源加载的过程大致如下
1,解析res文件夹下的各种文件,如果是xml文件调用java反射机制解析成相应的对象;
2,由res文件夹下文档的目录层级结构来匹配R.java中相对应的静态变量名称,并取出变量值作为key值;
3,将步骤2中key值和步骤1中的value值放入到HashMap<Integer,Object>中.
而Context类中的getResource()方法实际上就是返回这个HashMap对象

android中的mvc模式
就web开发而言,MVC模式已经非常的成熟,无论是jsp+servlet+javabean还是流行框架struts等
这种视图、模型、业务逻辑相分离的设计方法使代码的解耦合性更高,android在系统的架构上也使用了MVC模式
首先必须声明本人对MVC模式的理解可能还不是特别深入,有不对的地方还望指正
如果硬要往MVC上靠拢的话,我们不妨就可以把R.java文件当做是MVC中的Moudle(模型)
而res/layout文件夹下的所有xml文件就是页面视图View
业务逻辑(Control)就可以具体到某一个Activity类、Service类或者是Broadcast类等等。
如Activity的简单实现:
首先通过setContentViewById(id)方法,将业务逻辑层与视图层进行绑定
而setContentViewById(id)方法中实际上是对模型R.java文件的查找操作,通过传递过来的方法参数id来找到合适的页面layout

你可能感兴趣的:(android,mvc,struts,object,servlet,HashMap)